我在故事板中创建了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
-
(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
被调用,首先返回1和另一个numberOfItems,在开始时为0,在重新加载时为2 ......但是 -
(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
永远不会被调用
答案 0 :(得分:1)
我认为你的问题是你需要这些电话:
[[[self centerCMController] tableView] setDelegate:self];
[[[self centerCMController] tableView] setDatasource:self];
当您执行instantiateViewControllerWithIdentifier:
时,您创建的是UIViewController
,而不是UITableView
。因此,设置委托不应该做任何事情,也不应该有数据源。
答案 1 :(得分:0)
不会重新加载数据的最常见原因是表视图没有设置数据源。检查storyboard中的表视图,看它是数据源指向某个东西(通常是包含它的视图控制器)。
第二个最常见的是没有设置您告诉重新加载的表视图的出口。请检查NSLog然后设置(可能再次在故事板中)。
最后,请注意,设计很不寻常。让一个包含表视图的视图控制器更常见/更简单,不实例化另一个视图控制器然后移动它的视图。