我的iOS应用程序上有很多视图控制器,其中大多数都需要完全相同的IBAction。
因此,不是在所有视图控制器中编写相同的代码,是否可以使用IBActions创建一个单独的.h文件,然后在viewcontroller.h上导入?
我尝试创建一个Actions.h文件并使用ViewController.h文件中的命令“#import Actions.h”导入它,但是当我转到Interface Builder时,操作不会显示。有没有办法做到这一点?
答案 0 :(得分:5)
在超类中定义方法:
@interface MyActionViewController: UIViewController
{
}
- (IBAction)theAction:(id)sender;
@end
从中对视图控制器进行子类化:
@interface FirstViewController: MyActionViewController
{
}
@end
答案 1 :(得分:1)
不导入,您需要继承。使用该IBAction创建一个viewController,并在您想要使用的每个viewControllers中继承它。
答案 2 :(得分:1)
您实际上也可以在Interface Builder中完成所有操作。您可以使用选项将“对象”添加到nib文件中。在包含所有界面对象的面板中,有一个带有标记为“对象”的橙色立方体。
将其放在视图层次结构的根级别上。
将自定义类更改为类的名称(听起来像是“操作”)。将名称从Object更改为类的名称后,Interface Builder将允许您访问该类的任何IBAction。
将按钮连接到此自定义类的IBAction。
对于需要使用此按钮代码的任何其他nib文件,您可以执行相同的操作,这样您就不必再进行子类化。
答案 3 :(得分:0)
如果有人试图在Swift 2上这样做,那就是:
import UIKit
class Actions: UIViewController {
@IBAction func button1(sender: AnyObject) {
}
}
现在是ViewController:
import UIKit
class ViewController: Menu_Swipes {
}