如何设置的tableview的第一行勾选当应用程序启动? 我的意思是,当我现在开始应用,也有实现代码如下几排,当我点击其中的一些及其附属变化对号。 当点击一个又一个,另一个人来勾选和以前的对号自败。 所以现在我想的tableview的第一排,当应用程序开始被勾选,然后当我点击另一行是“uncheckmark”和“选中”新行等...
Answer 1:
尝试在这些帖子建议选择如何使用目标C在iphone表视图应用选择标记? 或iPhone:UITableView的CellAccessory对勾
基本上你需要跟踪使用比如字典或使复选标记的。 并在viewDidLoad
或init
方法使第一个单元格在词典中检查。 而绘制的细胞,总是检查是否在词典中的相应条目被选中或不和显示复选标记相应。 当用户点击一个细胞,修改在字典到选中/取消的值。
更新:这里是一个示例代码。
在.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];
}
Answer 2:
你可以一个整数设置为一个变量类似“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提供你会发现一个非常类似的概念。
Answer 3:
您可以使用,
if (firstCellSelected)
{
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
设置firstCellSelected
旗viewDidLoad
方法。
文章来源: Default CellAccessory