Ios self.tableView为零,与调用numberOfSectionsInTableView的tableView不同

Ios self.tableView为零,与调用numberOfSectionsInTableView的tableView不同,ios,xcode,uitableview,ios6,uiviewcontroller,Ios,Xcode,Uitableview,Ios6,Uiviewcontroller,我有一个带UITableView的UIViewController。当视图加载时,numberOfSectionsInTableView:被调用,我希望此时我的self.numberOfSections变量为0。然后,当我在加载数据的完成块中调用[self.tableView reloadData]时,它不会调用任何UITableViewDataSource方法 经过一些调试,我发现即使在视图加载时正确调用了numberOfSectionsInTableView:,如果我打印传递到方法中的tab

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

经过一些调试,我发现即使在视图加载时正确调用了
numberOfSectionsInTableView:
,如果我打印传递到方法中的
tableView
,它也不同于nil
self.tableView

我几乎可以肯定,我的所有插座都连接正确(我遵循了我在其他所有表视图中使用的相同模式)。因此,我不确定是什么导致了这种情况,如果我的
self.tableView
实例为零,那么哪个表视图甚至被传递到
numberOfSectionsInTableView:

下面的屏幕截图显示了
numberOfSectionsInTableView:
中的断点以及实例的打印输出。 英寸高:

  @interface YourViewController: UIViewController <UITableViewDataSource,UITableViewDelegate>
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];
}

我很感激你的回答,但这并不能满足我的需要。我的节数是可变的,我使用的是interface builder,因此我不需要以编程方式设置dataSource和委托,因为它们在IB中连接。在哪里设置此变量?在另一个viewController中?或者用相同的方法?用另一种方法,但这与我的IBOutlet self.tableView为零这一事实无关。尝试清理项目(shift+cmd+k),并从模拟器中删除,重新启动模拟器和xcode,或mac。有时Xcode变得哑了,并设置@property(弱的,非原子的)ibuitableview*TableView;不是很强,因为这是一个很好的决定。不知道为什么我以前没有重置。为了以防万一,我在清理时也会删除DerivedData。谢谢如何设置tableView属性?你能给我一个连接的截图吗。
-(void) showData
{
    [YourTableView reloadData];
    [YourTableView setNeedsDisplay];
}