这可能是我有点昏暗,我通过UINavigationController设置了一个UITableViewController,我已经将UITableViewController子类化了(见下文)并实现了数据源方法以使我的表运行起来
@interface RootViewController : UITableViewController {
NSArray *dataList;
}
@property(nonatomic, retain) NSArray *dataList;
@end
我的问题是:当我为RootViewController实现viewDidLoad时,我想设置表的标题(见下图)。我查看了UITableViewController的文档,发现它有一个名为“tableView”的属性,所以我试过......
[[self tableView] setTitle:@"Eeek!"];
这不起作用,我应该尝试的是......
[self setTitle:@"Eeek!"];
我想知道,当你继承UITableViewController并添加实际处理tableView而不是UITableViewController的代码时,这有意义吗?
加里
答案 0 :(得分:1)
你所设置的实际上是UIViewController(UITableViewController的父类)标题,这是UINavigationController用于在其navigationBar中显示标题的内容(图像中的蓝色条)
编辑以更好地回答问题:所以不,当你继承UITableViewController时,你实际上是在处理控制器,而不是表视图本身。
答案 1 :(得分:1)
问题的简短回答,不 - 你还在处理控制器的属性。两个setTitle:
操作之间的区别是:
// This message is being sent to the UITableViewController
[self setTitle:@"Eeek!"];
// This message is being sent to the UITableView property of the UITableViewController
[[self tableView] setTitle:@"Eeek!"];
setTitle:
对象上没有UITableView
方法,因此失败。
抽象地说,就MVC而言,第一个是在Controller上设置属性,第二个是在View上设置属性。