如何在应用程序启动时设置第一行表格视图的复选标记?我的意思是当我现在启动应用程序时,tableview 中的行数很少,当我点击其中一些时,它的附件更改为复选标记。当单击另一个时,另一个带有复选标记并且以前的复选标记消失。因此,现在我希望在启动应用程序时选中 tableview 的第一行,然后当我单击另一行时,它会“取消选中标记”和“选中标记”新行等...
问问题
163 次
3 回答
1
您可以将整数设置为类似于“checkedCell”的变量,将该值默认设置为单元格 0,并在cellForRowAtIndexPath
检查中查看单元格是否已被检查,如果未更改附件以使其检查并更新您的变量。
-(void)viewWillAppear{
currentCheckedCell = 0;
}
- (UITableViewCell *)tableView:(UITableView *)aTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
//
// Create cells -- if indexpath.row is equal to current checked cell reload the table with the correct acessories.
//
static NSString *cellIdentifier = @"RootMenuItemCell";
MyCell *cell = (MyCell *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell == nil) {
cell = [[MyCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier];
NSArray *nibContents = [[NSBundle mainBundle] loadNibNamed:@"MyCell" owner:self options:nil];
for (UIView *view in nibContents) {
if ([view isMemberOfClass:[MyCell class]]) {
cell = (MyCell *)view;
break;
}
}
//OTHER CELL CREATION STUFF HERE
// cell accessory
UIImage *accessory = [UIImage imageNamed:@"menu-cell-accessory-default.png"];
UIImage *highlighted = [UIImage imageNamed:@"menu-cell-accessory-selected.png"];
if(indexPath.row == currentCheckedCell){
//DEFAULT ACCESSORY CHECK
// cell.accessoryType = UITableViewCellAccessoryCheckmark;
UIImageView *accessoryView = [[UIImageView alloc] initWithImage:accessory highlightedImage:highlighted];
}else{
//DEFAULT ACCESSORY NONE
// cell.accessoryType = UITableViewCellAccessoryNone;
UIImageView *accessoryView = [[UIImageView alloc] initWithImage:accessory highlightedImage:accessory];
}
[cell setAccessoryView:accessoryView];
}
return cell;
}
- (void)tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
//UPDATE SELECTED CELL & RELOAD TABLE
currentCheckedCell = indexPath.row;
[self.tableview reloadData];
}
另外值得注意的是,我的示例使用自定义图像作为配件。如果您查看@ACB 提供的链接,您会发现一个非常相似的概念。
于 2012-10-24T19:36:43.130 回答
1
尝试这些帖子中建议的选项如何使用objective c在iphone中的表格视图上应用复选标记? 或iPhone :UITableView CellAccessory 复选标记
基本上,您需要使用字典来跟踪复选标记。并且 In viewDidLoad
orinit
方法使第一个单元格在字典中被选中。绘制单元格时,请始终检查字典中的相应条目是否已选中,并相应显示复选标记。当用户点击一个单元格时,将字典中的值修改为选中/未选中。
更新: 这是一个示例代码。
在 .h 文件中将属性声明为
@property(nonatomic) NSInteger selectedRow;
然后使用下面的代码,
- (void)viewDidLoad {
//some code...
self.selectedRow = 0; //if nothing should be selected for the first time, then make it as -1
//create table and other things
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
// create cell and other things here
if (indexPath.row == self.selectedRow)
{
cell.accessoryType = UITableViewCellAccessoryCheckmark;
} else {
cell.accessoryType = UITableViewCellAccessoryNone;
}
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
// some other code..
if (indexPath.row != self.selectedRow) {
self.selectedRow = indexPath.row;
}
[tableView reloadData];
}
于 2012-10-24T19:36:55.800 回答
1
您可以使用,
if (firstCellSelected)
{
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
在方法中设置firstCellSelected
标志。viewDidLoad
于 2012-10-31T22:35:52.613 回答