xcode 6 beta无法访问原型单元的自定义UI元素

时间:2014-08-19 10:19:10

标签: ios objective-c uitableview xcode6

我正在使用带有原型单元格的 UITableView 。我正在为这些原型单元格添加自定义元素( UILabel UIProgressView )。然后,我想使用 cellForRowAtIndexPath 中的标记初始化这些元素。

看起来像样板设计......但它不起作用。 我无法使用 viewWithTag 访问 UILabel UIProgressView 组件,看起来 contentView中没有任何内容在细胞原型内。

有趣的是,它适用于 XCode 5 XCode 6 beta 3到5。 此外,当我用XCode 6打开我的项目时,最初使用XCode 5设置的设计都搞砸了。我可以手动修复它,但是后来某些物体不再可见,就像它们在屏幕外面一样。

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

    NSLog(@"cell.contentView subViews: %@", [cell.contentView subviews]);

    UILabel *nameLabel = ((UILabel *)[cell.contentView viewWithTag:10]);
    nameLabel.text = @"hello test";

    NSLog(@"nameLabel: %@", nameLabel);

    return cell;
}

控制台日志输出:

cell.contentView subViews: ()
nameLabel: (null)

...(5 times)

想象一下: My screen when I launch IOs Simulator

你可以在这里看到原型单元格的UILabel没有改变(我已经检查过标签)而UIProgressView在屏幕之外

这是来自XCode 6的已知错误,还是只是我无法使用新IB?

我可以使用 contentView addSubview 手动添加所有功能,但显然我想使用StoryBoard。

编辑:该问题的解决方案( @codeIgnitor

取代:

cell = [tableView dequeueReusableCellWithIdentifier:@"CellFileDown"];

使用:

cell = [tableView dequeueReusableCellWithIdentifier:@"CellFileDown" forIndexPath:indexPath];

1 个答案:

答案 0 :(得分:1)

观察xcode 6新故事板功能W:any H:any所以如果你想在xcode 5中打开它,你的xcode 5不会知道引入的新功能,所以有时你的整个视图都搞砸了。我经历过这个!所以总是采取这样的实验,但

下面的代码在Xcode beta 4中运行良好

  - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
        {
            UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
     UILabel *headLinesLabel = (UILabel *)[cell viewWithTag:101];
            headLinesLabel.text = newsData.headlineTitle;
    }