1

我正在阅读 iOS 教程,我有一个 .h 和 .m 文件。在 .m 文件中,我编写了一些方法,例如 -

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return 1;
}

或者,

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"ChecklistItem"];
    return cell;
}

我不会在任何地方调用这些方法。尽管如此,输出在运行时会发生变化。如何?这些是压倒一切的方法吗?

4

4 回答 4

4

这些函数在您设置时调用:

yourTableView.delegate = self;
yourTableView.dataSource = self;

或连接yourTableView到您File's owner.xib文件中。否则你的UIView节目默认UITableView

于 2012-06-26T09:45:14.300 回答
4

如果我正确地回答了您的问题,“您没有调用某些方法,但它们会运行”,这是真的,Xcode因为您不调用某些方法,它们将自动运行。当您将一个对象放入您.xib的项目时,一些相关的方法将在您的项目中运行。如果你想摆脱它们,你可以简单地删除它们。

于 2012-06-26T09:54:16.683 回答
2

不,它们不是压倒一切的方法。放一个断点,去调试,你会看到谁在调用上面的方法。

请记住,如果您返回,总是会1调用。celForRowAtIndexPath因为你刚才说只有一个元素。

顺便说一句,这些方法被“自动”调用,因为您已将控制器设置datasource为您的UITableView.

于 2012-06-26T09:42:45.497 回答
2

这些是表格视图委托方法,当你设置它们时它们会被自动调用

TableViewVar.delegate = self;
TableViewVar.dataSource = self;
于 2012-06-26T09:45:38.483 回答