带有viewWithTag的UILabel - (文字没有出现)

时间:2014-09-17 10:43:05

标签: ios uitableview uilabel

有一个UITableViewCell,我在其上添加了标签1000的标签。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"ChecklistItem"];

    UILabel *label = (UILabel *) [cell viewWithTag:1000];

if (cell == nil) 
    {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];

然后

 UILabel *labelName = (UILabel *)[cell viewWithTag:1000]
 labelName.text = @"test".

当我跑步时,牢房是空的。有什么建议吗?

3 个答案:

答案 0 :(得分:3)

问题还可能是您没有使用唯一的标签号。这意味着视图控制器场景中的某些内容可能具有您在另一个对象上定义的相同标记号。

例如,对我来说,我有一个UITableViewCell,其标签#为0,UILabel标签为#0,另一个UILabel标签#为1.这导致了问题,并使其成为标签#1根本不会显示。当我点击该行时,我可以看到该文本 - 但是未单击该行时数据将不会显示。

当我更改两个UILabel的标签号时,它修复了问题。

答案 1 :(得分:1)

您应该检查[tableView dequeueReusableCellWithIdentifier:@"ChecklistItem"][cell viewWithTag:5000]是否返回 nil 以外的内容。

如果是,请务必按此顺序执行:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    //Try to reuse the cell
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"ChecklistItem"];

    //If you can't reuse, instantiate the cell 
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"ChecklistItem"];
    }

    //Now that you have your cell, find the label 
    UILabel *labelName = (UILabel *)[cell viewWithTag:5000];

    //Check if the label exists just in case 
    if (labelName) {
        //And set the text
        [labelName setText:@"test"];
    }
}

答案 2 :(得分:0)

这个问题已经解决了,我的应用程序在iPhone上运行得很好,所以我决定让它变得通用。我将所有视图控制器复制到iPad故事板。我开始在iPad故事板上做一些改变。

无论我在iPad故事板上添加/删除的是什么,都没有做任何改动,因为主界面是iphone,原因是我没有改变iPad的主界面,所以在iPad上运行时,我正在使用iPhone的故事板。