我的控制器中有一个UITableView
。 UITableView
的单元格包含xib。
出于某种原因,当加载表时,隐藏单元格的视图。
我可以选择单元格,我看到单元格不是nil,并且视图也不是nil,仍然隐藏单元格。
以下是代码:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath: (NSIndexPath *)indexPath
{
NSString *cellIdentifier = @"CategoryCell";
CategoryCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell == nil){
NSArray* topObjects = [[NSBundle mainBundle] loadNibNamed:cellIdentifier owner:self options:nil];
for (id obj in topObjects){
if ([obj isKindOfClass:[CategoryCell class]]){
cell = (CategoryCell*)obj;
}
}
}
id object;
if (indexPath.row < items.count)
object = [items objectAtIndex:indexPath.row];
if ([object isKindOfClass:[MenuCategory class]]) {
// Configure the cell
MenuCategory *cellInfo = (MenuCategory *)object;
[cell setCategory:cellInfo];
}
else if([object isKindOfClass:[MenuSubCategory class]]){
// Configure the cell
MenuSubCategory *cellInfo = [self.items objectAtIndex:indexPath.row];
[cell setSubCategory:cellInfo];
}
return cell;
}
答案 0 :(得分:0)
首先:
NSArray* topObjects = [[NSBundle mainBundle] loadNibNamed:cellIdentifier owner:self options:nil];
for (id obj in topObjects){
if ([obj isKindOfClass:[CategoryCell class]]){
cell = (CategoryCell*)obj;
}
}
将其替换为
[[NSBundle mainBundle] loadNibNamed:cellIdentifier owner:self options:nil];
并在您的类中声明成为xib所有者的IBOutlet。这个插座可以指向您的牢房。然后,您必须将Cell XIB中的Files Owner
(必须是上述代码所在的类)连接到您的单元格。然后,您可以通过
self.myCellOutlet;
并且不必枚举xib中的所有对象。
你确定吗
[cell setSubCategory:cellInfo];
的作品?
如果你真的认为你的手机只是隐藏了,你是否尝试发送
[cell setHidden:NO];
只是为了查看是否属于这种情况,以及错误是否与可见性状态不同?
答案 1 :(得分:0)
解决方案与代码无关。
桌子比细胞窄了。因此,文本(写在单元格的左侧)超出了表格范围。这就是它在屏幕上丢失的原因。