我有一个标签视图,可以为每个标签
加载表格视图第一个标签界面声明UITableView * tableView; 第二个选项卡界面声明UITableView * favTableView;
当声明第二个表的行数时,这有效:
- (NSInteger)tableView:(UITableView *)favTableView numberOfRowsInSection:(NSInteger)section {
return [favList count];
}
但如果我把它改为:
- (NSInteger)favTableView:(UITableView *)favTableView numberOfRowsInSection:(NSInteger)section {
return [favList count];
}
当我尝试加载第二个标签时,应用程序崩溃了
我的错误是(a)不理解哪个是变量/保留字,(b)给每个表一个唯一的标识符,即favTableView,而不是重用tableView。
第二个表也没有标题栏
答案 0 :(得分:5)
您必须实施的委托方法是
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
在这个方法原型中,tableView:
(注意冒号)是一个你无法改变的固定名称。 tableView
的第二个实例只是一个在方法中有意义的局部变量名。以下内容也是有效的:
-(NSInteger)tableView:(UITableView *)tv numberOfRowsInSection:(NSInteger)section
委托方法名称就是它们的名称。您无法决定是否希望委托方法名称成为其他名称,或者UITableView
如何知道在需要来自其委托的信息时要调用哪些方法?
因此,对于您的表favTableView,如果您将实现上述委托方法的对象指定为favTableView的委托,那么在调用时,本地变量tv
实际上与favTableView
相同。 / p>
我可以看到你对此感到困惑的地方。 SDK使用'tableView'来处理很多事情:方法原型占位符名称,变量名称以及谁知道还有什么。归结为能够阅读和理解Objective-C方法签名。 :-)这有点奇怪,直到你习惯它。
答案 1 :(得分:0)
当您指出时,委托可能使用预先设置的方法名称。不应该重用tableView应该没有功能问题,因为你可能还是会重用favTableView。标题栏应该通过在自定义tableView中手动设置标题的属性来解决。如果您要查找标题,则必须设置高度和大小的属性。