Swift,集合视图和情节提要,在另一个标签上使用 viewWithTag 时为空

Posted

技术标签:

【中文标题】Swift,集合视图和情节提要,在另一个标签上使用 viewWithTag 时为空【英文标题】:Swift, collection view & storyboard, get null when using viewWithTag on another Label 【发布时间】:2014-08-27 18:35:43 【问题描述】:

我看到一些非常奇怪的行为,我需要一些帮助。 我有一个集合视图单元格,它最初有一个标签,标签为 43。

我正在使用以下代码设置标签的值:

func collectionView(collectionView: UICollectionView!, cellForItemAtIndexPath indexPath: NSIndexPath!) -> UICollectionViewCell! 
    let object = self.fetchedResultsController.objectAtIndexPath(indexPath) as NSManagedObject
    let cell = collectionView.dequeueReusableCellWithReuseIdentifier("playerCell", forIndexPath: indexPath) as UICollectionViewCell
    cell.backgroundColor = UIColor.orangeColor()
    let mintmplabel : UILabel = cell.viewWithTag(43) as UILabel
    mintmplabel.text = "fruktkaka"
    //(cell.viewWithTag(43) as UILabel).text =  object.valueForKey("playerName").description
    //let mintmplabelb : UILabel = cell.viewWithTag(41) as UILabel
    //mintmplabelb.text = "megaman"
    //(cell.viewWithTag(41) as UILabel).text =  object.valueForKey("playerName").description


    return cell

它按预期工作!但是,我后来尝试向集合视图单元格添加另一个标签,并给它一个标签 41。当我取消注释行时

    //let mintmplabelb : UILabel = cell.viewWithTag(41) as UILabel
    //mintmplabelb.text = "megaman"

我收到以下错误(在“let”行):

致命错误:在展开可选值时意外发现 nil (lldb)

当前消息显示在源代码中:“Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, sub code =0x0)”

我尝试了许多不同的方法,但我就是无法让它发挥作用。我还尝试删除这两个标签,然后重新添加它们(使用相同的标签)。这会破坏带有标签 43 和 41 的标签!

要么我错过了有关如何使用标签的内容,要么我偶然发现了某种错误。

我正在使用 Xcode 6 beta 5。

任何帮助将不胜感激,我不知道在哪里可以找到更多信息。

谢谢你/马丁

【问题讨论】:

【参考方案1】:

好吧,看来在这里问一个问题可以让我找到答案。我不知道它为什么有效,但它确实有效。

我选择了不起作用的标签,在情节提要的“属性检查器”中,未选中“已安装”的复选框,并选中了“已安装 wC hR”的复选框。通过取消选中“wC hR installed”并选中“installed”复选框,它又开始工作了。

我不知道这是做什么的,如果我发现会更新答案。

【讨论】:

以上是关于Swift,集合视图和情节提要,在另一个标签上使用 viewWithTag 时为空的主要内容,如果未能解决你的问题,请参考以下文章

如何在 swift 中从情节提要中的 didSelectRowAt indexPath 打开视图标签栏控制器?

swift:在集合视图的标签中显示进度

如何在 ios swift 中以编程方式将情节提要视图控制器加载到标签栏控制器中?

如何获取情节提要的缺失内容?

滚动时集合视图中的图像变高

使用自动布局时标签不会调整大小,情节提要中的约束