从app delegate调用视图控制器方法

时间:2011-11-15 18:36:29

标签: iphone objective-c xcode methods delegates

我正在尝试从app委托调用视图控制器中的方法,但是Xcode说没有选择器'myMethodHere'的已知类方法。这是我的代码:

AppDelegate.m:

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

MainViewController.m:

-(void) myMethodHere {
     [..]
}

5 个答案:

答案 0 :(得分:13)

我会尝试

MainViewController * vc = [[MainViewController alloc]init];
[vc myMethodHere];
[vc release];
  1. 确保在您的app委托.m文件
  2. 中导入MainViewController
  3. 确保将“myMethodHere”添加到MainViewController .h文件

答案 1 :(得分:11)

如果要调用实例方法,则尝试调用方法。如果视图控制器是 root 视图控制器,那么您应该可以这样调用它:

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

如果它不是根视图控制器,那么你必须找到一些其他方法来获取实例,然后调用上面最后一行中的方法。

答案 2 :(得分:6)

如果要访问故事板上的视图控制器,可以使用AppDelegate中的这段代码:

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

请记住添加导入。

答案 3 :(得分:1)

在Swift中,你可以像这样写

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

答案 4 :(得分:0)

尝试写

 -(void) myMethodHere;
MainViewController.h

中的