2012-04-18 67 views
20

我有一个基类视图控制器类继承UIViewController和基类viewcontroller类的继承类。现在我有一个笔尖,它的文件所有者是继承类,但是我所有的动作和插座都在基类中。甚至可以将nib文件中的action \ outlet连接到基类中的action \ outlet?如何连接到基类IBOutlet或IBAction

+0

是的。 Xcode中的所有文件都在同一个项目中吗? – wbyoung 2012-04-18 22:22:12

回答

29

我会example可基本解释:

定义一个基类(姑且称之为BaseViewController),并为其分配一个UITableView IBOutlet中的.h文件:

// BaseViewController.h 
@interface BaseViewController : UIViewController  
@property (weak, nonatomic) IBOutlet UITableView *tableView;  
@end 

定义两个孩子类(即FirstChildViewControllerSecondChildViewController):

// FirstChildViewController.h 
@interface FirstChildViewController : BaseViewController 
@end 

// SecondChildViewController.h 
@interface SecondChildViewController : BaseViewController 
@end 

现在做出任何(或两者)的儿童游乐n个类使用基类的iboutlet,只需将引用出口拖到基类.h文件中的属性定义即可!就这样!

enter image description here

here是一个完整的项目说明了这一点。

+3

嗯..这似乎没有工作迅速 – 2016-04-25 00:23:57

7

两种方式来实现:

1)

做编程方式(即代码)

首先声明你的网点的基类。

然后通过您的继承类中的代码分配您的网点。

2)

您也可以将您的出口和动作在你的XIB文件。 Xcode从基类知道继承的插座和动作。

4

如果基类在Swift框架中,那么即使基类和它的出口是公共的,有时Xcode 7也不会看到出口。在这种情况下,解决方法如下:

  1. 在IB设定的控制,以使用基类
  2. 连接出口
  3. 在IB设定的控制用派生类

IB将显示“!”在插座旁边,就好像它们缺失一样,但在运行时不会出现错误。

如果有人有更好的解决方法,让我知道!

+0

你能解释一些更详细的如何做这个东西? – c0d3Junk13 2016-01-06 22:23:30

+0

@ c0d3Junk13:打开故事板。显示身份检查器。选择控制。将其类设置为基类。连接插座。选择相同的控件并将类设置为派生类。忽略警告。 – phatmann 2016-01-08 14:23:46

+0

嗯..这似乎hackish ..是否允许?或者它会在以后突破 – 2016-04-25 00:19:14