self.tableView是nil,与调用numberOfSectionsInTableView的tableview不同

时间:2013-09-11 20:24:32

标签: ios xcode uitableview ios6 uiviewcontroller

我有一个带UITableView的UIViewController。当视图加载时,numberOfSectionsInTableView:被调用,我希望那时我的self.numberOfSections变量为0.然后当我在加载我的数据的完成块中调用[self.tableView reloadData]时,它不会调用任何UITableViewDataSource方法。

经过一些调试后,我发现即使在视图加载时正确调用numberOfSectionsInTableView:,如果我打印传递给方法的tableView,它也会与nil {{1}不同}}

我几乎肯定我的所有插座都已正确连接(我遵循了我用于制作的每个其他表视图的相同模式)。所以我不确定导致这种情况发生的原因,如果我的self.tableView实例为零,那么哪个表格视图甚至会被传递到numberOfSectionsInTableView:

下面的屏幕截图显示了self.tableView中的断点和实例的打印输出。 enter image description here

1 个答案:

答案 0 :(得分:1)

在.h:

  @interface YourViewController: UIViewController <UITableViewDataSource,UITableViewDelegate>

in .m:

    YourTableView.delegate = self;
    YourTableView.dataSource = self;

tableView委托:

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

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

    return numberofRowsYouWant;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {


    // make your cell.....

    return cell;

}

如果您不错过任何这些步骤,它应该正常工作! 当然,如果您使用IB,请不要忘记将tableView与IBOutlet连接!

您可以重新加载tableView,例如这样的方法:

-(void) showData
{
    [YourTableView reloadData];
    [YourTableView setNeedsDisplay];
}