如何在事件发生后更新 UITableViewCell
Posted
技术标签:
【中文标题】如何在事件发生后更新 UITableViewCell【英文标题】:How do I update a UITableViewCell after an event 【发布时间】: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”之类的问题,该事件是用户链接一个帐户。再次发布您的代码,以便我们查看 对不起,我的英语不太好,不知道怎么写 好的,你已经发布了设置复选标记的代码......重要的部分是看看你是如何连接帐户的。这个想法是,在某个地方你应该得到一个回调来说明它发生了,然后在里面运行上面的代码来更新单元格 【参考方案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 如果它解决了您的问题,请不要忘记标记最佳答案/支持我的答案以上是关于如何在事件发生后更新 UITableViewCell的主要内容,如果未能解决你的问题,请参考以下文章
如何防止 ScrollViewer 在更新时触发 ViewChanged 事件?