2014-01-28 33 views
0

執行的方法也許是不可能的,但這裏是我的問題:所有ViewControllers

我需要在所有的ViewController的execute同樣的方法,恰恰在viewDidLoad或在viewDidAppear方法。

AppDelegate或其他地方,除了從每個控制器調用此函數之外,還有什麼辦法嗎?

感謝advandce

和遺憾,如果我猜作出UIViewController子類,做你做了什麼,讓你的新的子類型的應用程序的每個控制器一個愚蠢的問題什麼的

+0

在appdelegate中聲明並定義方法並在創建appdelegate對象或調用它之後調用它使其他類通用並且在導入並創建它的對象後聲明並定義方法並調用 –

回答

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]; 
    } 
    
  • 現在子類的ViewControllers從這個btBaseViewController類作爲

    btHomeViewController。^ h

    @interface btHomeViewController : btBaseViewController 
    
    @end 
    

現在,如果你不提供的方法renderPhoneUIrenderPADUIbtHomeViewController基礎版本的定義將被執行。

這很簡單。

0

MyUIViewController.h

@interface MYUIViewController : UIViewController 

@end 

MYUIViewController.m

@implementation MYUIViewController 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    [self myMethodCall]; 
} 

然後,每個需要執行此方法的UIViewController,應該是MYUIViewController類型。

0

您可以定義應用程序的委託方法也可以使一個UIViewController

1

試試這個的一個子類,

創建BaseViewController

@interface BaseViewController : UIViewController 

和子類創建所有其他ViewControllersBaseViewController

@interface AViewController : BaseViewController 

並在viewDidLoadviewDidAppearBaseViewController

相關問題