- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有 2 个部分和 3 行,如下所示:
搜索距离
250 英尺
1000 英尺
4000 英尺
map 类型
标准
卫星
混合
我希望每个部分的一行有一个复选标记,但我当前的代码将取消选中整个 TableView 的所有可见单元格,并保留一个选定的行带有复选标记。换句话说,我将为整个表格(2 个部分)打一个复选标记。在这里,我发布了我的整个代码。我用谷歌搜索了很多,但似乎没有一个可以解决我的问题。任何人,请帮助更正我的代码。提前致谢。
#import "PAWSettingsViewController.h"
#import "PAWAppDelegate.h"
#import <Parse/Parse.h>
@interface PAWSettingsViewController ()
- (NSString *)distanceLabelForCell:(NSIndexPath *)indexPath;
- (PAWLocationAccuracy)distanceForCell:(NSIndexPath *)indexPath;
- (NSString *)maptypeLabelForCell:(NSIndexPath *)indexPath;
- (PAWMaptypeSelect)maptypeForCell:(NSIndexPath *)indexPath;
@property (nonatomic, assign) CLLocationAccuracy filterDistance;
@end
typedef enum {
kPAWSettingsTableViewDistance = 0,
kPAWSettingsTableViewMaptype,
kPAWSettingsTableViewNumberOfSections
} kPAWSettingsTableViewSections;
typedef enum {
kPAWSettingsTableViewDistanceSection250FeetRow = 0,
kPAWSettingsTableViewDistanceSection1000FeetRow,
kPAWSettingsTableViewDistanceSection4000FeetRow,
kPAWSettingsTableViewDistanceNumberOfRows
} kPAWSettingsTableViewDistanceSectionRows;
typedef enum {
kPAWSettingsTableViewMaptypeSectionStandardRow = 0,
kPAWSettingsTableViewMaptypeSectionSatelliteRow,
kPAWSettingsTableViewMaptypeSectionHybridRow,
kPAWSettingsTableViewMaptypeNumberOfRows
} kPAWSettingsTableViewMaptypeSectionRows;
@implementation PAWSettingsViewController
@synthesize tableView;
@synthesize filterDistance;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
PAWAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
self.filterDistance = appDelegate.filterDistance;
}
return self;
}
#pragma mark - Custom setters
// Always fault our filter distance through to the app delegate. We just cache it locally because it's used in the tableview's cells.
- (void)setFilterDistance:(CLLocationAccuracy)aFilterDistance {
PAWAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
appDelegate.filterDistance = aFilterDistance;
filterDistance = aFilterDistance;
}
#pragma mark - View lifecycle
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
#pragma mark - Private helper methods
- (NSString *)distanceLabelForCell:(NSIndexPath *)indexPath {
NSString *cellText = nil;
switch (indexPath.row) {
case kPAWSettingsTableViewDistanceSection250FeetRow:
cellText = @"250 feet";
break;
case kPAWSettingsTableViewDistanceSection1000FeetRow:
cellText = @"1000 feet";
break;
case kPAWSettingsTableViewDistanceSection4000FeetRow:
cellText = @"4000 feet";
break;
case kPAWSettingsTableViewDistanceNumberOfRows: // never reached.
default:
cellText = @"The universe";
break;
}
return cellText;
}
- (PAWLocationAccuracy)distanceForCell:(NSIndexPath *)indexPath {
PAWLocationAccuracy distance = 0.0;
switch (indexPath.row) {
case kPAWSettingsTableViewDistanceSection250FeetRow:
distance = 250;
break;
case kPAWSettingsTableViewDistanceSection1000FeetRow:
distance = 1000;
break;
case kPAWSettingsTableViewDistanceSection4000FeetRow:
distance = 4000;
break;
case kPAWSettingsTableViewDistanceNumberOfRows: // never reached.
default:
distance = 10000 * kPAWFeetToMiles;
break;
}
return distance;
}
- (NSString *)maptypeLabelForCell:(NSIndexPath *)indexPath {
NSString *cellText = nil;
switch (indexPath.row) {
case kPAWSettingsTableViewMaptypeSectionStandardRow:
cellText = @"Standard";
break;
case kPAWSettingsTableViewMaptypeSectionSatelliteRow:
cellText = @"Satellite";
break;
case kPAWSettingsTableViewMaptypeSectionHybridRow:
cellText = @"Hybrid";
break;
case kPAWSettingsTableViewMaptypeNumberOfRows: // never reached.
default:
cellText = @"?";
break;
}
return cellText;
}
- (PAWMaptypeSelect)maptypeForCell:(NSIndexPath *)indexPath {
PAWMaptypeSelect maptype = nil;
switch (indexPath.row) {
case kPAWSettingsTableViewMaptypeSectionStandardRow:
maptype = @"Standard";
break;
case kPAWSettingsTableViewMaptypeSectionSatelliteRow:
maptype = @"Satellite";
break;
case kPAWSettingsTableViewMaptypeSectionHybridRow:
maptype = @"Hybrid";
break;
case kPAWSettingsTableViewMaptypeNumberOfRows: // never reached.
default:
maptype = nil;
break;
}
return maptype;
}
#pragma mark - UINavigationBar-based actions
- (IBAction)done:(id)sender {
[self.presentingViewController dismissModalViewControllerAnimated:YES];
}
#pragma mark - UITableViewDataSource methods
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return kPAWSettingsTableViewNumberOfSections;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
switch ((kPAWSettingsTableViewSections)section) {
case kPAWSettingsTableViewDistance:
return kPAWSettingsTableViewDistanceNumberOfRows;
break;
case kPAWSettingsTableViewMaptype:
return kPAWSettingsTableViewMaptypeNumberOfRows;
break;
case kPAWSettingsTableViewNumberOfSections:
return 2;
break;
};
}
- (UITableViewCell *)tableView:(UITableView *)aTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *identifier = @"SettingsTableView";
if (indexPath.section == kPAWSettingsTableViewDistance) {
UITableViewCell *cell = [aTableView dequeueReusableCellWithIdentifier:identifier];
if ( cell == nil )
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue2 reuseIdentifier:identifier];
}
// Configure the cell.
cell.textLabel.text = [self distanceLabelForCell:indexPath];
if (self.filterDistance == 0.0) {
NSLog(@"We have a zero filter distance!");
}
PAWLocationAccuracy filterDistanceInFeet = self.filterDistance * ( 1 / kPAWFeetToMeters);
PAWLocationAccuracy distanceForCell = [self distanceForCell:indexPath];
if (abs(distanceForCell - filterDistanceInFeet) < 0.001 ) {
cell.accessoryType = UITableViewCellAccessoryCheckmark;
} else {
cell.accessoryType = UITableViewCellAccessoryNone;
}
return cell;
}
else if (indexPath.section == kPAWSettingsTableViewMaptype){
UITableViewCell *cell = [aTableView dequeueReusableCellWithIdentifier:identifier];
if ( cell == nil )
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue2 reuseIdentifier:identifier];
}
// Configure the cell.
cell.textLabel.text = [self maptypeLabelForCell:indexPath];
return cell;
}
else {
return nil;
}
}
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
switch ((kPAWSettingsTableViewSections)section) {
case kPAWSettingsTableViewDistance:
return @"Search Distance";
break;
case kPAWSettingsTableViewMaptype:
return @"Map Type";
break;
case kPAWSettingsTableViewNumberOfSections:
return @"";
break;
}
}
#pragma mark - UITableViewDelegate methods
// Called after the user changes the selection.
- (void)tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.section == kPAWSettingsTableViewDistance) {
[aTableView deselectRowAtIndexPath:indexPath animated:YES];
// if we were already selected, bail and save some work.
UITableViewCell *selectedCell = [aTableView cellForRowAtIndexPath:indexPath];
if (selectedCell.accessoryType == UITableViewCellAccessoryCheckmark) {
return;
}
// uncheck all visible cells.
for (UITableViewCell *cell in [aTableView visibleCells]) {
if (cell.accessoryType != UITableViewCellAccessoryNone) {
cell.accessoryType = UITableViewCellAccessoryNone;
}
}
selectedCell.accessoryType = UITableViewCellAccessoryCheckmark;
PAWLocationAccuracy distanceForCellInFeet = [self distanceForCell:indexPath];
self.filterDistance = distanceForCellInFeet * kPAWFeetToMeters;
}
else if (indexPath.section == kPAWSettingsTableViewMaptype){
[aTableView deselectRowAtIndexPath:indexPath animated:YES];
// if we were already selected, bail and save some work.
UITableViewCell *selectedCell = [aTableView cellForRowAtIndexPath:indexPath];
if (selectedCell.accessoryType == UITableViewCellAccessoryCheckmark) {
return;
}
// uncheck all visible cells.
for (UITableViewCell *cell in [aTableView visibleCells]) {
if (cell.accessoryType != UITableViewCellAccessoryNone) {
cell.accessoryType = UITableViewCellAccessoryNone;
}
}
selectedCell.accessoryType = UITableViewCellAccessoryCheckmark;
PAWMaptypeSelect maptypeForCell = [self maptypeForCell:indexPath];
}
}
@end
最佳答案
你有一个错误
//取消选中所有可见单元格。
for (UITableViewCell *cell in [aTableView visibleCells]) {
if (cell.accessoryType != UITableViewCellAccessoryNone) {
cell.accessoryType = UITableViewCellAccessoryNone;
}
}
此处的 for 循环取消选择所有单元格。您还必须检查 if 循环中的部分
你可以像这样为你的单元格设置标签
cell.tag = indexPath.section;
如果条件是,则在 for 循环中
for (UITableViewCell *cell in [aTableView visibleCells]) {
if (cell.accessoryType != UITableViewCellAccessoryNone && cell.tag == indexPath.section) {
cell.accessoryType = UITableViewCellAccessoryNone;
}
}
关于ios - UITableViewCell - 每个部分勾选一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25421956/
我正在构建一个自定义复选框,功能已经差不多了,但样式还有待改进。 我有几个问题, 我需要以圆为中心的支票 我只需要在单击复选框本身而不是文本时激活检查。 恐怕我无法在不使用左侧位置左侧的填充的情况下将
您好,我正在使用 Titanium 创建一个可以检查的行表。 我需要用 Javascript 编写一些代码,只允许检查一行,当检查其中一行时,其他行则取消检查。 我不担心 Titanium 部分,但更
我需要你的帮助。 如何从数组中获取值并使用 HTML 5 的 data 属性选中(勾选)其相关复选框? 即。 var x = "[monday,thursday]" ...经过一些处理后
我在 Winforms 应用程序中有一个 CheckedListBox,其中包含月份作为项目(如一月、二月、三月等)我正在尝试实现这样的功能,即当任何项目被选中时,应该弹出一条消息,说明它已被选中。而
我是一名 iOS 开发新手。我想在我的 UITableViewCell 被选中时添加一个复选标记。选择另一行时,应删除复选标记。我该怎么做? 最佳答案 不要使用 [tableview reloadDa
在我的应用程序中,有 2 个复选框用于获取用户的类型(例如:学生或教师)。我知道我应该使用单选按钮而不是复选框,但我在教程中的问题要求使用复选框(所以请暂时忽略单选按钮)。 即使我选中一个复选框,is
我的 html 页面上有一个表单,其中有一堆复选框作为选项。其中一个选项是“全选”,我希望在选中“全选”框后立即选中所有其他复选框(如果未选中)。我的代码看起来像这样: All Posts
我有一个 JSP,我在其中使用 c:out 打印一些字符串。但我需要通过反斜杠转义所有 '(刻度)。 示例:jsp '"> 打印 tag.title = test's 'test's 但我
我有一个复选框,然后是一个交叉图像,如下所示。 当我单击图像时,复选框应该被选中。我尝试了以下代码。但没有用。 任何人都可以帮助使用 Javascript 来完成它... 最佳答案 你可以使用jQu
我对使用 python 做一个编程游戏很感兴趣,并且我想以 GunTactyx ( http://apocalyx.sourceforge.net/guntactyx/index.php ) 的风格来
我正在使用 UltimateListCtrl 和 LC_LIST 样式。我的列表中的所有项目都带有复选框。填充列表后,我尝试根据从数据库收到的数据动态检查(勾选)一些项目。但在填充列表后,我无法检查(
这个问题在这里已经有了答案: .prop() vs .attr() (18 个答案) 关闭 9 年前。 我已经看过,但无法为我的问题找到简单的答案。我单击其中一个 TR,然后单击另一个 TR,它工作
我有这个 HTML 代码: 如何在 JavaScript 中检查(勾选)值“2”?我无法更改 html 代码,它是公共(public)网站。这是此 radio 的 XPath,值为“2” //*[
请考虑这段代码: plotOptions: { series: { label: { connectorAllowed: false }
我是一名优秀的程序员,十分优秀!