如何在启动时设置静态UITableViewCell的alpha?

时间:2015-02-11 15:29:33

标签: ios objective-c uitableview

我正在创建一个具有“设置”页面的应用程序。对于“设置”页面,我使用的是UITableViewController 静态 UITableViewCells。我使用NSUserDefaults来存储设置。

现在,这是设置视图控制器:

enter image description here

根据viewDidLoadSettingsTableViewController.m函数中的代码,应该检查已保存的设置,并根据该属性,<{1}}属性< em> Notification Interval 单元格应该更改。如果我在alpha方法中执行此操作,则此工作正常,但是,它不适用于tableView:didSelectRowAtIndexPath方法。这是来源:

viewDidLoad

2 个答案:

答案 0 :(得分:0)

首先作为NSString比较方法,你应该使用它:

isEqualToString:

而不是

isEqualToString:

第二件事是你找到所选单元格是你想要检查的单元不是最好的主意,我的意思是:

if(cell == self.notificationTableViewCell)
不要这样做 - 你很快就会发现自己陷入了巨大的麻烦。 处理的正确方法是使用枚举,并根据indexPath部分,行值切换大小写。否则你保留对单元格所在的内存的引用,但是这个单元格将通过UITableView的排队机制重用于另一行 - 所以你最终会在最后保留对随机单元格的随机引用这里。

对于alpha问题,我认为您应该在didSelectRowAtIndexPath方法中同步NSUserDefaults后重新加载表数据。 使用UITableView中的reloadData方法,或者更好地重新加载您知道会在点击时更改的部分(优化版本,但您可以从重新加载整个表格开始)。

答案 1 :(得分:0)

将更改单元格alpha属性的代码移动到视图生命周期后期发生的方法中。一个好的尝试是viewWillAppear: