Ios 将tableview添加为子视图赢得';t重新加载数据
我在故事板中创建了Ios 将tableview添加为子视图赢得';t重新加载数据,ios,iphone,objective-c,uitableview,Ios,Iphone,Objective C,Uitableview,我在故事板中创建了UITableViewController,并通过 self.centerCMController = [self.storyboard instantiateViewControllerWithIdentifier:@"ContextMenu"]; self.centerCMController.delegate = self; [self.view addSubview:self.centerCMController.view]; 稍后在代码中我调用 [self.cent
UITableViewController
,并通过
self.centerCMController = [self.storyboard instantiateViewControllerWithIdentifier:@"ContextMenu"];
self.centerCMController.delegate = self;
[self.view addSubview:self.centerCMController.view];
稍后在代码中我调用
[self.centerCMController.tableView reloadData];
什么也没发生。TableView不会重新加载数据!我做了一些调查,发现如果我在行前设置numberOfTtems=3:
[self.view addSubview:self.centerCMController.view];
表视图仅显示3项。无论我以后是否更改numberOfTtems=4,它都只会显示前3项(尽管正确)。。。但细胞的数量在时间结束前是固定的
我错过了什么
编辑:
为了更具说明性,我正确地设置了代理,包括:
(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView and
-
调用时,首先返回1和其他numberOfItems,开始时为0,重新加载时为2。。。但是-
(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
从不调用不重新加载数据的最常见原因是表视图未设置数据源。检查序列图像板中的表视图,查看其数据源是否指向某个对象(通常是包含它的视图控制器) 第二个最常见的情况是未设置要重新加载的表视图的出口。请使用NSLog进行检查,然后进行设置(可能再次在故事板中)
最后,值得注意的是,这种设计与众不同。使用一个包含表视图的视图控制器更为常见/简单,而不是实例化另一个视图,然后移动其视图。我认为您的问题在于需要以下调用:
[[[self centerCMController] tableView] setDelegate:self];
[[[self centerCMController] tableView] setDatasource:self];
执行
实例化eviewController时,标识符为:
,创建的是UIViewController
,而不是UITableView
。因此,设置委托不应该做任何事情,也没有数据源 重要的是您在表视图中所做的工作代表了方法,而不是故事板。显示其中的一些,例如,在使用此numberOfItems
的地方。为了更具描述性,我正确地设置了代理—(NSInteger)NumberOfSectionsTableView:(UITableView*)tableView和—(NSInteger)tableView:(UITableView*)tableView numberOfRowsInSection:(NSInteger)节,首先返回1,然后返回其他numberOfItems,开始时为0,重新加载时为2。。。但是-(UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath永远不会被调用这就像是我希望在所有视图控制器上都有的下拉菜单。。。此外,这是很容易再创造。创建新项目。在底部加两个烟头。一个触发操作以添加表视图,另一个触发操作以重新加载数据。实际上,我将把它添加到Opening中。
[[[self centerCMController] tableView] setDelegate:self];
[[[self centerCMController] tableView] setDatasource:self];