我首先显示一个包含字符串数组内容的表。后来,我使用另一个字符串数组来显示其内容。
我在tableVIew:cellForRowAtIndexPath
方法中设置文本如下:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath];
if (!cell)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"];
}
NSString *string;
if (condition)
{
string = array2[indexPath.row];
}
else
{
string = array1[indexPath.row];
}
NSLog(@"text:%@", string); // say, "house"
cell.textLabel.text = string; //it is set correctly/as expected here, as verified by the log statement, but it shows the wrong text while displaying
NSLog(@"text:%@", cell.textLabel.text); //same as value of variable string, "house", but it displays some other text, while it displays.
return cell;
}
我还设置了tableView:numberOfRowsInSection:as:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if (condition)
{
return [array2 count];
}
else
{
return [array1 count];
}
}
答案 0 :(得分:1)
您的条件结果在两种方法中有所不同。当tableView:numberOfRowsInSection:
为真时,array2
您引用condition
。当tableView:cellForRowAtIndexPath:
为真时,array1
您引用condition
。
为了避免这些错误,我通常会定义一个基于section返回数据数组的方法。这样可以将逻辑定义在类中的一个位置。
- (NSArray *)arrayForSection:(NSInteger)section
{
if (condition)
{
return array1;
}
else
{
return array2;
}
return @[];
}
答案 1 :(得分:0)
刚刚解决了。我的错误是,我在cellWillDisplay
方法中设置了textLabel的文本:
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
cell.textLabel.text = array1[indexPath.row];
}