故事板中的原型单元格不会创buildUILabels等
我的问题与这个非常相似。
我在界面生成器中使用故事板devise的自定义原型单元格将所有内部对象设置为零(未创build),所以当我尝试为它们分配值时,它们保持空白。
我正在使用Xcode 4.6.2,并在6.1 iPhone模拟器中运行代码。 这是我所做的:
- 在接口生成器中devise了一个具有必要字段的原型单元。
- 在代码中为此自定义单元创buildUITableViewCell的子类,然后将接口生成器中的单元设置为此types。
- 控制拖动字段到.h文件,为我设置的对象(UILabels等)。 我将单元格的标识符设置为“serverNameCell”
- 将表的数据源和委托设置为该表所在的Viewcontroller。
- 将表与ViewControler中的表对象关联起来
此刻,表格显示了正确的节数和行数,但单元格的值未被设置。
这是cellForRowAtIndexPath:(NSIndexPath *)indexPath
代码:
NewServerCell *cell = [tableView dequeueReusableCellWithIdentifier:@"serverNameCell"];
我总是找回一个单元格,并且内存位置对于一个有效的对象似乎是可以的。
但是当我尝试cell.name.text = [thisServer name];
我发现cell.name
标签总是为零。
没有崩溃 – 但我的领域没有被设置。
我已经检查了一百万次,标识符是好的 – 这是! 我已经通过故事板的定制单元格的苹果文档 – 但仍然得到这个令人沮丧的问题..
任何人都有这个,解决了吗?
我今天在Xcode 5的故事板上遇到了这个问题。 把几乎所有剩余的头发拉出来后,我注意到我正在调用这个viewDidLoad
:
[self.tableView registerClass:[SwitchTableViewCell class] forCellReuseIdentifier:@"Setting"];
哎呦! 在故事板中使用原型单元格时,此行是不必要的。 故事板自动为我configuration。 SwitchTableViewCell *tableViewCell = [tableView dequeueReusableCellWithIdentifier:@"Setting" forIndexPath:indexPath];
没有调用registerClass::
显式工作就好了。
问题仍然是为什么调用registerClass::
导致一些sockets不能连接。
这个问题的一个简单的解决方法是在原型中标记UILabel并使用以下操作:
UILabel* label = [cell viewWithTag:cellTag]; label.text = [thisServer name]
这是最明显错过的原因( 我一直这么做! ):
你有没有设置你的tableview的委托和数据源到控制器? (即自己)
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. _tableView.delegate = self; _tableView.dataSource = self; }
希望你已经得到了解决这个问题。 无论如何,因为我没有看到你的问题的直接答案,我写这个。
根据我在使用自定义Prototype单元格的情况下的经验,提供indexPath。 使用以下方法:
MyCustomCell *cell = (MyCustomCell *)[tableView dequeueReusableCellWithIdentifier:@"CellIdentifier" forIndexPath:indexPath];
代替这个代码:
NewServerCell *cell = [tableView dequeueReusableCellWithIdentifier:@"serverNameCell"];
改变这一点将很容易解决这个问题。 你会看到所有的标签和图像视图的值在tableview中可见。
在这一个上划伤我的头太难了。 结束了,我是我的CustomUITableViewCell.h文件中retain
而不是strong
IBOutlets声明。 我想我需要更多地研究内存pipe理。
错误:
@property (nonatomic, retain) IBOutlet UIImageView *preview;
正确:
@property (nonatomic, strong) IBOutlet UIImageView *preview;
检查你如何初始化你的TableViewController。 我有同样的问题,然后我觉得我没有适当地引用我的TableViewController。
所以我不得不在“pushViewController”之前更改我的代码。
而不是: [[TableViewController alloc]init]
使用: [self.storyboard instantiateViewControllerWithIdentifier:yourTableViewIdentifier]
并不要忘记删除任何代码注册你的tableview的单元格类如下: [self.tableView registerClass:[SwitchTableViewCell class] forCellReuseIdentifier:@"Setting"];
希望能帮助到你
有些东西要尝试:
这听起来像你知道你在做什么,但我会提到明显只是想提醒你。 确保“名称”属性设置为IBOutlet。
-
在IB中,您可以设置文件所有者的类types,将其设置为您的自定义类。
-
只是为了排除故障,暂时取出出列的东西,并尝试它。
-
尝试除“名称”以外的其他属性名称我不相信“名称”存在于基类中。
我之前遇到类似的事情,可能是简单的事情。
我也有同样的问题(标签在单元格中nil
)。
我的补救措施是删除一个initWithCoder
方法,我“意外”添加到表视图,而尝试其他的东西。 当单元格从故事板启动时调用此方法。 如果你覆盖它,而不是自己启动所有的标签,你最终会得到nil
标签。
所以,作为这种症状的一个潜在的错误:检查这种方法的存在。
-(id)initWithCoder:(NSCoder *)decoder { self = [self init]; return self; }
- PDFKit是垂直翻转PDFPage初始化的图像
- Swift本地化帮助程序类
- LLDB(Swift):将原始地址转换为可用types
- Sushi解释模型-视图-控制器
- 在更新UITableView中显示的CoreData模型后,应用程序崩溃
- Swift将string公式转化为实际计算
- 学习Objective-C:编译时“Command / Developer / usr / bin / clang失败,退出代码1”
- ios的Facebook的SDK的v3.11共享对话框发布button被禁用
- 如果还使用iOS,则Google Play Services 8.4.0会打破Google Cloud Messaging for Android