我使用一个字符串数组来设置detailTextLabel。最初,所有字幕的设置都是正确的,但如果我滚动,detailTextLabel就会消失。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"personCell" forIndexPath:indexPath];
Person *person = [_persons objectAtIndex:indexPath.row];
cell.textLabel.text = person.name;
cell.detailTextLabel.text = person.phone;
// also tried setNeedsLayout but does not help
[cell setNeedsLayout];
return cell;
}我使用的是iPhone 6和iOS 8,我也使用故事板,并将UITableViewCell样式设置为Subtitle。
发布于 2014-11-04 12:24:46
好的,现在我们已经发现了这个问题(这个人的电话号码是零的),你可以用几种方法解决这个问题。
似乎你不想把文本设置为空白。我想这是因为它以一种奇怪的方式布置了单元格,标题被推到顶部,但下面没有任何东西。可以理解。
因此,您可以创建一个定制的UITableViewCell子类。在它中,您可以自己管理布局,如果编号为零,则以一种方式显示,如果有电话号码,则以另一种方式显示。
一个更简单的方法是使用两个不同的原型单元。
在故事板中创建两个原型单元格。
一个带有Basic类型,并给它一个reuseIdentifier noPhoneNumberCell。另一个具有Subtitle类型和重用标识符phoneNumberCell。
那么在代码中你可以这样做..。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
Person *person = [_persons objectAtIndex:indexPath.row];
UITableViewCell *cell;
if (person.phone) {
cell = [tableView dequeueReusableCellWithIdentifier:@"phoneNumberCell" forIndexPath:indexPath];
cell.detailTextLabel.text = person.phone;
} else {
cell = [tableView dequeueReusableCellWithIdentifier:@"noPhoneNumberCell" forIndexPath:indexPath];
}
cell.textLabel.text = person.name;
return cell;
}这将创建两个单元格队列。一个给有电话号码的人,一个给没有电话的人。
这样你就不会把两者混为一谈,从而避免你所面临的问题。
发布于 2015-03-31 15:36:51
[cell.detailTextLabel sizeToFit];https://stackoverflow.com/questions/26734034
复制相似问题