iphone - protocol - cocoa delegate example



從應用程序委託調用視圖控制器方法 (4)

我會嘗試

MainViewController * vc = [[MainViewController alloc]init];
[vc myMethodHere];
[vc release];
  1. 確保將您的MainViewController導入到您的應用程序委託.m文件中
  2. 確保你添加“myMethodHere”到你的MainViewController .h文件

https://src-bin.com

我試圖從應用程序委託調用視圖控制器中的方法,但Xcode說沒有選擇器“myMethodHere”已知的類方法。 這是我的代碼:

AppDelegate.m:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [..]
            [MainViewController myMethodHere];
    [..]
    return YES;
}

MainViewController.m:

-(void) myMethodHere {
     [..]
}

Answer #1

當您要調用實例方法時,您正試圖調用一個方法。 如果視圖控制器是視圖控制器,那麼你應該可以這樣調用它:

UIWindow *window = [UIApplication sharedApplication].keyWindow;
MainViewController *rootViewController = window.rootViewController;
[rootViewController myMethodHere];

如果它不是根視圖控制器,那麼你將不得不找到一些其他方法來獲取實例,然後像上面最後一行那樣調用方法。


Answer #2

如果你想訪問故事板上的視圖控制器,你可以使用AppDelegate中的這段代碼:

MainViewController *rootViewController = (MainViewController*)self.window.rootViewController;
[rootViewController aMethod];

請記住添加導入。


Answer #3

在Swift中,你可以這樣寫

    UIApplication.sharedApplication().keyWindow?.rootViewController?.yourMethodName()




delegates