Xcode / InterfaceBuilder:为什么在基类中声明的 IBOutlets 和 IBActions 在子类中不可用?

Xcode / InterfaceBuilder: Why aren't IBOutlets and IBActions declared in the baseclass not available in the subclass?

假设我有一个 class 这样的:

class MyViewModeledController<ViewModel: FeatureViewModeling>: UIViewController {

  @IBOutlet weak var headingLabel: UILabel?    
  @IBOutlet weak var flipFaceButton: UIButton?
  @IBOutlet weak var swipeFromRightGesture: UISwipeGestureRecognizer?
  @IBOutlet weak var swipeFromLeftGesture: UISwipeGestureRecognizer?

  var viewModel: ViewModel!
  
  // etc.
}

当我现在创建一个 concreteSubclass:

class MySpecificViewModeledController: MyViewModeledController<MySpecificViewModel> {
   // etc.
}

在界面构建器中,none 个已声明的出口或操作出现在检查器窗格的出口列表中。

有谁知道为什么/有解决方法吗?

这可能已经在这里得到回答:

它与您的 class 的通用方面有关。

解决方法是将属性声明为 weak var(无 IBOutlet),然后在您的 subclass 的 viewDidLoad 中,从您在 subclass 中创建的一些出口分配它们.