【问题标题】:How do I update a UITableViewCell after an event如何在事件发生后更新 UITableViewCell
【发布时间】:2014-03-03 13:58:52
【问题描述】:

我想单击一个单元格,首先我想链接一个帐户(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;
}

}

【问题讨论】:

  • ?为什么你不能用它运行复选标记代码。这是没有意义的。发布您的代码!
  • 我不能直接打勾,因为例如,如果我想在您打开登录页面后链接到保管箱,如果用户点击 x 无法访问,他打了相同的勾号,而不应该放
  • 如果这是您的问题,那么您的问题毫无意义。您询问如何同时运行 2 段代码并且刚刚说不可能这样做。我猜你想问更多类似“Hpw 我是否在事件发生后更新 UITableViewCell”之类的问题,该事件是用户链接一个帐户。再次发布您的代码,以便我们查看
  • 对不起,我的英语不太好,不知道怎么写
  • 好的,你已经发布了设置复选标记的代码......重要的部分是看看你是如何连接帐户的。这个想法是,在某个地方你应该得到一个回调来说明它发生了,然后在里面运行上面的代码来更新单元格

标签: ios iphone objective-c uitableview


【解决方案1】:

当您第一次选择单元格时,该单元格被选中,当您选择其他单元格时,所有其他单元格都被取消选择。

将此代码放入 Didselect 方法中。

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

把这段代码放到 Diddeselect 方法中

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

【讨论】:

    【解决方案2】:

    没有看到什么样的回调,你必须看看用户是否连接了他们的帐户。我唯一可以建议您做的就是在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?

    以上是您检测到该保管箱已被链接的方式。

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

    【讨论】:

    • @Luca 在为您进行研究之后,我已经编辑了我的答案。请下次努力解决您自己的问题,或者提供您拥有的所有必要代码,以便人们能够真正理解问题
    • 好的,谢谢你给我这么多的帮助,我很抱歉
    • @Luca 如果它解决了您的问题,请不要忘记标记最佳答案/支持我的答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-08
    • 2016-01-29
    • 1970-01-01
    • 2021-08-20
    • 1970-01-01
    • 2015-10-11
    相关资源
    最近更新 更多