如何在基类中连接到IBOutlet或IBAction

时间:2012-04-18 22:15:46

标签: objective-c ios uiviewcontroller interface-builder

我有一个基础视图控制器类,它继承自UIViewController和基类viewcontroller类的继承类。现在我有一个nib,其文件所有者是继承的类,但我的所有操作和出口都在基类中。甚至可以将nib文件中的action \ outlet连接到基类中的那个?

3 个答案:

答案 0 :(得分:30)

我基本上会按example解释一下:

定义一个基类(让我们称之为BaseViewController)并在.h文件中为它分配一个UITableView IBoutlet:

//  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

现在要使子类中的任何一个(或两个)都使用基类的iboutlet,只需将引用出口拖到基类.h文件中的属性定义中......就是这样!

enter image description here

here是一个完整的项目,可以说明这一点。

答案 1 :(得分:7)

实现此目的的两种方法:

1)

以编程方式(即代码中)执行

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

然后通过继承类中的代码分配您的商店。

2)

您还可以在XIB文件中分配插座和操作。 Xcode了解基类的继承出口和操作。

答案 2 :(得分:5)

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

  1. 在IB中设置控件以使用基类
  2. 连接插座
  3. 在IB中设置控件以使用派生类
  4. IB将显示"!"在出口旁边,就好像它们丢失一样,但在运行时不会出现错误。

    如果有人有更好的解决方法,请告诉我们!