我需要在我的代码中重写一个事件的UITableView。但我尝试的一切似乎都不起作用。我试过了[self.tableView reloadData]
,我和代表们一起玩过。我试图实现的目标是使用不同格式的单元格呈现完全不同的UITableView。所以我需要重绘表格。任何帮助将不胜感激。
继承我的代码:
...
if/else...
}
//Now I want to reload the tableView
[tableView reloadData]; //Isn't getting it done
NSLog(@"index = %i", index); //Always fires
tableView.delegate = self; // Didn't help
[tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO]; // Also nothing
}
我要做的就是:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
if (segmentOptions == snacks) {
cell = [[TableViewCell1 alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
NSLog(@"A");
} else {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
NSLog(@"B");
}
}
...
}
答案 0 :(得分:5)
你可能意味着像
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *cellIdentifier = @"cell-not-snacks";
if (segmentOptions == snacks) {
cellIdentifier = @"cell-snacks";
}
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell == nil) {
if (segmentOptions == snacks) {
cell = [[TableViewCell1 alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
} else {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier];
}
}
}
答案 1 :(得分:0)
我认为值得查看prepareForReuse中的方法UITableViewCell Class。在从UITableView方法dequeueReusableCellWithIdentifier返回对象之前调用此方法:。
您可以在自定义UITableViewCell上覆盖此方法(不要忘记包括[super prepareForReuse]),以便重绘您需要重绘的任何内容。
答案 2 :(得分:-2)
问题是:if (cell == nil) {
。我删除了它,每次都很完美。