iPhone:如何删除UITableViewCellAccessory

时间:2011-08-15 16:41:28

标签: iphone ios

在我的viewWillAppear方法中,我试图删除单元格附件,在调试中我点击了这一行,但仍然没有从屏幕中删除,任何想法我应该在哪里做错了? Cell是自定义单元格,我在cellForRowAtIndexPath方法中第一次设置此附件,稍后当它从另一个页面导航时尝试在viewWillAppear中更改。

CustomCell *cell =(CustomCell*)[self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:0]];  
cell.accessoryType = UITableViewCellAccessoryNone;

2 个答案:

答案 0 :(得分:0)

请试试这个......

UITableViewCell *x;
x=[tblProfileView cellForRowAtIndexPath:];
[x setAccessoryType:UITableViewCellAccessoryNone]; 

答案 1 :(得分:0)

您应该避免直接操作UITableViewDelegate和UITableViewDatasource方法之外的UITableView元素的显示。这样做会撤消这些方法提供的封装。相反,我建议在ViewController中创建一个实例变量,您可以在委托和数据源方法中进行轮询。例如,使用名为showCellAccessory的BOOL:

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [self.tableView reloadData];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    // the usual cell dequeueing stuff here

    if(showCellAccessory) {
        cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    } else {
        cell.accessoryType = UITableViewCellAccessoryNone;
    }

    // more cell configuration stuff here
}

您可以使用委派从您正在导航的ViewController向此ViewController发送消息:

- (void)dismissOtherViewController:(UIViewController)viewController {
    showCellAccessory = NO;

    [self.navigationController popViewControllerAnimated:YES];
}