0

第9课老师说numberOfSectionsInTableView:方法默认返回1,但是我自己创建项目的时候发现默认返回0,导致我的table view cell消失了!我发现问题出在哪里,并通过设置 numberOfSectionsInTableView: return 1 来解决它,问题消失了。那么,这是否意味着斯坦福犯了一个错误?

当我在 .m 文件中添加 UITableViewController 的新子类时,Xcode 生成了以下代码:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
#warning Potentially incomplete method implementation.
    // Return the number of sections.
    return 0;
}

顺便说一句,我正在使用 Xcode 4.3.3 ...

4

3 回答 3

6

您误解了默认值的含义。当苹果或老师或某人提到一个方法的默认返回值是什么时,这意味着只要该方法没有实现,它就会以这种方式运行。

当您编写自己的方法时,您返回的值为 0。如果您使用模板,则该模板将覆盖该方法以将其设置为 0。如果您想要默认行为,只需删除该方法。

这些委托方法在大多数情况下确实具有默认值。控制单击头文件上的 Delegate 实现,您将看到 @Optional 方法,它们是大多数时间具有默认值的方法。

于 2012-08-14T04:19:50.833 回答
1

我相信“默认”它们的意思是,如果您UITableViewDataSource没有实现numberOfSectionsInTableView:,则假定值为 1。Xcode 模板可能包含上述代码(返回 0),但这与框架的默认值不同。

于 2012-08-14T04:17:13.410 回答
0

恐怕我们的斯坦福朋友是对的。默认值为 1。我很少包含此方法。可以肯定的是,我通过从我正在开发的应用程序中删除该方法来测试它,果然,只有 1 个部分。我已经开发了从 1.0 版到当前版本的应用程序。

确保您的代表设置为正确的类。并确保您的 xib 具有文件所有者的正确类名。那个让我偶尔。

于 2012-08-14T04:06:58.403 回答