另一个类的collectionView IBOutlet总是一个空的可选项

时间:2015-07-17 12:14:35

标签: ios swift uicollectionview iboutlet

我在我的CubeController类中声明了IBOutlet并连接到InterfaceBuilder,如下所示:

// Class CubeController
    @IBOutlet weak var collectionView: UICollectionView!

每当我尝试从另一个类引用collectionView时,collectionView始终是一个空的可选项。这是我的代码:

// Another class
    func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) 
    {
       collectionView.performBatchUpdates
       ({
          print("selekt")
          let mug = CubeController()
          let colView = mug.collectionView
          if let _ = colView
          {
            print("uhu")
          }
         }, completion: {_ in
        })
    }

打印出“selekt”,但“uhu”不打印。这里发生了什么?我在这里做了什么错误?.CubeController的collectionView插槽正在工作并在用户界面中显示它自己。如何识别错误?

2 个答案:

答案 0 :(得分:0)

视图控制器的插座仅在加载视图时才会连接。

问题很可能是您实例化新实例而不是使用对视图控制器的存在实例的引用。如果是这种情况,您可以找到帮助here

虽然你可能也很可能不需要做什么。为什么不能使用您传入的collectionView参数?或者在这些截然不同的收藏视图中?

最后,如果您真的需要一个新实例,那么您需要加载新的视图控制器视图。如果您以某种方式呈现该视图控制器,则会自动完成此操作,但您可以使用fooViewController.loadView()强制它。我谨慎地反对这种方法,因为除非您正在编写单元测试,否则这几乎肯定不是您需要做的。

答案 1 :(得分:0)

let mug = CubeController()
let colView = mug.collectionView

您刚刚创建了一个新的CubeController实例,该实例并非来自您的情节提要。