我有一个继承自基类的基视图控制器类UIViewController
和一个继承自基类的viewcontroller
类。现在我有一个 nib,其文件所有者是继承的类,但我所有的操作和出口都在基类中。甚至可以将 nib 文件中的 action\outlet 连接到基类中的 action\outlet 吗?
问问题
11266 次
3 回答
33
我将基本上通过示例来解释它:
定义一个基类(我们称之为BaseViewController
)并在 .h 文件中为其分配一个UITableView
IBoutlet:
// BaseViewController.h
@interface BaseViewController : UIViewController
@property (weak, nonatomic) IBOutlet UITableView *tableView;
@end
定义两个子类(即FirstChildViewController
和SecondChildViewController
):
// FirstChildViewController.h
@interface FirstChildViewController : BaseViewController
@end
// SecondChildViewController.h
@interface SecondChildViewController : BaseViewController
@end
现在要使子类中的一个(或两个)使用基类的 iboutlet,只需将引用出口拖到基类 .h 文件中的属性定义中即可。就是这样!
这是一个完整的项目来说明这一点。
于 2014-03-08T06:40:22.007 回答
7
有两种方法可以做到这一点:
1)
以编程方式进行(即在代码中)
首先在基类中声明您的网点。
然后通过继承类中的代码分配您的网点。
和
2)
您还可以在您的 XIB 文件中分配您的出口和操作。Xcode 知道从基类继承的出口和动作。
于 2012-04-18T22:22:35.773 回答
7
如果基类在 Swift 框架中,那么有时 Xcode 7 将看不到 outlet,即使基类及其 outlet 是公共的。在这种情况下,解决方法如下:
- 在 IB 中将控件设置为使用基类
- 连接插座
- 在 IB 中将控件设置为使用派生类
IB 将显示“!” 旁边的插座就好像它们丢失了一样,但运行时不会出现错误。
如果有人有更好的解决方法,请告诉我!
于 2015-11-20T19:22:59.617 回答