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 中创建的一些出口分配它们.
假设我有一个 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 中创建的一些出口分配它们.