如何在事件发生后更新UITableViewCell

时间:2014-03-03 13:58:53

标签: ios iphone objective-c uitableview

我想点击一个单元格,首先我要链接一个帐户(Dropbox或日历或提醒或其他人),同时如果链接成功,我想要勾选单元格。 我的问题是,一旦链接了我必须再次点击单元格以添加复选标记。可以通过单击该单元格来完成这两项操作吗?


- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
UITableViewCell *cell=[tableView cellForRowAtIndexPath:indexPath];
if (![[DBSession sharedSession]isLinked]) {
        [[DBSession sharedSession] linkFromController:self];
              if ([[DBSession sharedSession]isLinked]) 
                  cell.accessoryType = UITableViewCellAccessoryCheckmark;
}

}

2 个答案:

答案 0 :(得分:1)

当您第一次选择单元格时,单元格被勾选并且当您选择其他单元格时,则取消选择所有其他单元格。

将此代码放入Didselect方法中。

UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
cellStr = cell.textLabel.text;
cell.accessoryType = UITableViewCellAccessoryCheckmark;

将此代码放入Diddeselect方法

UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 
cell.accessoryType = UITableViewCellAccessoryNone;                                

答案 1 :(得分:0)

如果用户已连接其帐户,则无需查看您需要查看的回调类型。我建议你做的唯一事情是在viewDidAppear上运行以下代码。

注意我不知道这是否有效,因为我不确定在用户看到添加帐户的屏幕后是否会触发viewDidAppear。因为我不知道那是怎么实现的。

- (void)viewDidAppear:(BOOL)animated
{
    // Check Dropbox
    NSIndexPath dropboxIndex = [NSIndexPath indexPathForRow:1 inSection:0];
    UITableViewCell *cell=[tableView cellForRowAtIndexPath:dropboxIndex];
    if (![[DBSession sharedSession]isLinked]) {
        [[DBSession sharedSession] linkFromController:self];
              if ([[DBSession sharedSession]isLinked]) 
                  cell.accessoryType = UITableViewCellAccessoryCheckmark;

    // Check calendar
    // same as above


    // Check reminder
    // same as above
}

修改

首先你需要看看这个。 Dropbox SDK - linkFromController: delegate or callback?

以上是您检测到Dropbox已被链接的方式。

然后当appDelegate收到成功消息时,使用NSNotificationCenter向屏幕发送消息并运行我上面提供的代码。