如何管理选定的单元格

时间:2014-01-20 19:59:47

标签: ios objective-c uitableview

我正在构建一个博客阅读器应用程序,其中包含NSArray中的帖子对象列表。

cell.postTitle.text=post.Title;

我正在尝试找出已选择的帖子,然后将相应的cell.postTitle.text设置为较浅的字体。

不知何故,当导航控制器回到顶层(并被销毁?)时,我必须记住这种状态。

有谁能告诉我这样做的最佳方法?每个post对象都有一个postID。也许我可以将它存储在NSUserDefault中,但读取的postID列表可能会随着时间的推移而变得过大。

还有didSelectRowAtIndexPath但是在这种方法中,我无法直接访问单元属性吗?

3 个答案:

答案 0 :(得分:0)

如果您使用UITableView显示您的信息,您应该使用delgate didSelectRowAtIndexPath。

为了使用自定义界面(我假设你有),你应该创建自己的自定义单元格,子类UITableViewCell并创建一个控制器和xib。然后,您可以将xib注册到表中并使用它。然后你可以调用所需的属性。

答案 1 :(得分:0)

  

不知何故,当导航控制器回到顶层(并被销毁?)时,我必须记住这种状态。

最好通过创建自定义协议使用委托方法来处理: https://developer.apple.com/library/ios/documentation/cocoa/conceptual/ProgrammingWithObjectiveC/WorkingwithProtocols/WorkingwithProtocols.html

当您的用户单击该单元格时,您将调用一个委托方法,该方法可以将topID值设置回顶层控制器中。

  

还有didSelectRowAtIndexPath但是在这种方法中,我无法直接访问单元属性吗?

是的,你可以进入牢房。看看这个问题并回答: How to reach the current selected cell in didSelectRowAtIndexPath?

或者,如果您想首先获取用于创建表格单元格的数据,可以在didSelectRowAtIndexPath方法中使用indexPath.row值从数组中获取值那是在那个索引位置并通过委托方法传递它。

答案 2 :(得分:0)

找到解决方案。

只需将所选帖子的postId添加到NSMutableArray中的didSelectRowAtIndexPath即可。然后在cellForRowAtIndexPath中,我检查以确保我的self.readPostID数组中不存在postID。

若是,我将字体设置为Helvetica Light,否则将其设置为Helvetica Bold。

首先,每当viewdid出现时,我必须确保[self.tableview reloadData]

其次,我只是在每次viewDidDisappear时将我的NSMutableArray readPostId保存到NSUserDefault并在viewDidLoad中重新加载数组。

此外,我必须确保单元格重用不会影响字体。其他条件解决了这个问题。