我正在创建一个具有“设置”页面的应用程序。对于“设置”页面,我使用的是UITableViewController
静态 UITableViewCells
。我使用NSUserDefaults
来存储设置。
现在,这是设置视图控制器:
根据viewDidLoad
中SettingsTableViewController.m
函数中的代码,应该检查已保存的设置,并根据该属性,<{1}}属性< em> Notification Interval 单元格应该更改。如果我在alpha
方法中执行此操作,则此工作正常,但是,它不适用于tableView:didSelectRowAtIndexPath
方法。这是来源:
viewDidLoad
答案 0 :(得分:0)
首先作为NSString比较方法,你应该使用它:
isEqualToString:
而不是
isEqualToString:
第二件事是你找到所选单元格是你想要检查的单元不是最好的主意,我的意思是:
if(cell == self.notificationTableViewCell)
不要这样做 - 你很快就会发现自己陷入了巨大的麻烦。
处理的正确方法是使用枚举,并根据indexPath部分,行值切换大小写。否则你保留对单元格所在的内存的引用,但是这个单元格将通过UITableView的排队机制重用于另一行 - 所以你最终会在最后保留对随机单元格的随机引用这里。
对于alpha问题,我认为您应该在didSelectRowAtIndexPath
方法中同步NSUserDefaults后重新加载表数据。
使用UITableView中的reloadData
方法,或者更好地重新加载您知道会在点击时更改的部分(优化版本,但您可以从重新加载整个表格开始)。
答案 1 :(得分:0)
将更改单元格alpha
属性的代码移动到视图生命周期后期发生的方法中。一个好的尝试是viewWillAppear:
。