ios - 来自另一个类的 collectionView IBOutlet 始终是空可选

标签 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 导出正在工作并在用户界面中自行显示。我如何识别错误?

最佳答案

View Controller 的 socket 仅在其 View 加载时才连接。

问题很可能是您正在实例化一个新实例,而不是使用对 View Controller 的现有实例的引用。如果是这种情况,可以寻求帮助here .

尽管也很可能出现这样的情况:您正在做的事情是不必要的。为什么不能使用传入的 collectionView 参数?或者在这些绝对不同的 Collection View 中?

最后,如果您确实需要一个新实例,那么您需要加载新 View Controller 的 View 。如果您以某种方式呈现该 View Controller ,则此操作会自动完成,但您可以使用 fooViewController.loadView() 强制执行。不过,我警告不要使用这种方法,因为除非您正在编写单元测试,否则这几乎肯定不是您需要做的。

关于ios - 来自另一个类的 collectionView IBOutlet 始终是空可选,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31475633/

相关文章:

ios - UICollectionView insertItemsAtIndexPaths : raising error

ios - 如何使用collectionView setCollectionViewLayout:animated更改布局更改的持续时间?

ios - UICollectionView 设置一个类似于 UITableView 的标题 View

ios - html/css——试图居中图像并忽略正文边距

ios - 在不打开 App(或在后台)的情况下通过 iOS 通过 BLE 同步数据

ios - 在 Swift 中获取 UIImage 的平均颜色

iphone - NSPredicate:每种取一个

ios - 将 Objective-C malloc 转换为 Swift

ios - 具有默认参数的 swift 函数也是一个选择器?

ios - 在 Swift 4 中以编程方式获取信号强度