子类化UITableViewController你得到了什么?

时间:2010-10-22 16:58:41

标签: iphone objective-c cocoa-touch

这可能是我有点昏暗,我通过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的代码时,这有意义吗?

alt text

加里

2 个答案:

答案 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上设置属性。