繁体   English   中英

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

[英]how to connect to IBOutlet or IBAction in base class

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

我将基本上通过例子解释它:

定义一个基类(让我们称之为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文件中的属性定义..就是这样!

在此输入图像描述

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

完成此任务的两种方法:

1)

以编程方式(即代码中)

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

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

2)

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

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

  1. 在IB中设置控件以使用基类
  2. 连接插座
  3. 在IB中设置控件以使用派生类

IB将显示“!” 在出口旁边,好像它们丢失了,但在运行时不会有错误。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM