我正在构建一个博客阅读器应用程序,其中包含NSArray中的帖子对象列表。
cell.postTitle.text=post.Title;
我正在尝试找出已选择的帖子,然后将相应的cell.postTitle.text
设置为较浅的字体。
不知何故,当导航控制器回到顶层(并被销毁?)时,我必须记住这种状态。
有谁能告诉我这样做的最佳方法?每个post对象都有一个postID。也许我可以将它存储在NSUserDefault中,但读取的postID列表可能会随着时间的推移而变得过大。
还有didSelectRowAtIndexPath
但是在这种方法中,我无法直接访问单元属性吗?
答案 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中重新加载数组。
此外,我必须确保单元格重用不会影响字体。其他条件解决了这个问题。