永远不会调用UITableView cellForRowAtIndexPath

Jor*_*rke 6 objective-c uitableview uiviewcontroller ios

我有一个UITableView作为a的子视图UIViewController.viewController UI通过故事板进行管理.委托和数据源根据需要设置为viewController.

我有以下代码:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    if (updateType == Profile) {
        return 15;
    }
    else {
        return 6;
    }
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return 1;
}
Run Code Online (Sandbox Code Playgroud)

上述两种方法完全按照它们的要求调用.调用[self.tableview reloadData]结果再次调用方法.令人困惑的部分- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath永远不会被称为.永远.

数据源和委托在代码中设置,其中self.tableviewUITableView故事板中的IBOutlet :

self.tableview.delegate = self;
self.tableview.dataSource = self;
Run Code Online (Sandbox Code Playgroud)

找到答案

我正在使用具有自动布局的故事板.问题是尺寸设置为wRegular hRegular,尽管故事板的其余部分设置为wAny hAny.只需切换它就可以了!荒谬我知道,但它仍然是一个答案.

Vap*_*olf 0

您确定您的 dataSource 和 delegate 设置为正确的类吗?在 IB 中很容易犯错,尤其是在复制/粘贴时。在 viewDidAppear 方法中放置一个断点,然后在控制台调用中放置一个断点

po self.tableView.dataSource
Run Code Online (Sandbox Code Playgroud)

验证它是否在运行时设置。