也许这是不可能的,但这是我的问题:
我需要在所有ViewController
上执行相同的方法,正好在viewDidLoad
或viewDidAppear
方法上。
除了从每个控制器调用此函数之外,AppDelegate
或其他地方是否有任何方法?
先谢谢
抱歉,如果这是一个愚蠢的问题或其他什么
答案 0 :(得分:1)
试试这个,
创建BaseViewController
@interface BaseViewController : UIViewController
并通过继承ViewControllers
BaseViewController
@interface AViewController : BaseViewController
并在viewDidLoad
或viewDidAppear
BaseViewController
答案 1 :(得分:0)
我猜是在制作一个UIViewController子类,它可以完成你所做的工作,并为你的应用程序的每个控制器创建新的子类类型。
MyUIViewController.h
@interface MYUIViewController : UIViewController
@end
MYUIViewController.m
@implementation MYUIViewController
- (void)viewDidLoad
{
[super viewDidLoad];
[self myMethodCall];
}
然后,每个需要执行此方法的UIViewController都应该是MYUIViewController类型。
答案 2 :(得分:0)
您可以在app delegate中定义方法,也可以创建UIViewController的子类
答案 3 :(得分:0)
这是一种简单的方法。关注OOPS&像这样使用继承。
制作一个baseViewController&例如,添加两个方法。
btBaseViewController.h
@interface btBaseViewController : UIViewController
@end
-(void)renderPadUI;
-(void)renderPhoneUI;
为这两种方法提供无操作定义。
btBaseViewController.m
-(void)renderPhoneUI {
// to be overridden by derrived classes
}
-(void)renderPadUI {
// to me overridden by derrived classes.
}
在viewDidLoad中做这样的事情
if(IS_IPAD) {
[self renderPadUI];
}else{
[self renderPhoneUI];
}
现在将来自此btBaseViewController
类的ViewControllers作为
btHomeViewController.h
@interface btHomeViewController : btBaseViewController
@end
现在,如果您不提供方法renderPhoneUI
和renderPADUI
btHomeViewController
的定义,则将执行基本版本。
很简单。