如何从哪个视图控制器中查找调用方法

时间:2013-07-31 10:06:01

标签: ios facebook storyboard viewcontroller uiview-hierarchy

提供更多细节:我正在使用FBLoginView。 我正在为我的LoginViewController使用故事板和单独的xib文件。 在我的应用程序中,我有一个loginLogController,它是一个FBLoginViewDelegate。 还有一个SettingsViewController,它是一个FBUserSettingsDelegate。 我在loginView中有一个跳过按钮,以便以访客身份登录而不是Facebook用户。

现在我正在做的是: 当应用程序打开时,我会显示一个Walkthrough视图,其中包含底部的登录视图。 当用户使用Facebook登录按钮登录时,以下方法将通过facebook sdk自动执行:

- (void)loginViewFetchedUserInfo:(FBLoginView *)loginView
                        user:(id<FBGraphUser>)user;

在这个方法中,我正在执行一个segue到主视图。

然而,人们也可以选择首先以访客身份登录,然后转到“设置”,他们仍然可以登录Facebook。这恰好执行上面相同的方法!

但是我的segue没有被识别,因为我不再在Walkthrough视图控制器中了。现在我在设置视图控制器中,它在我的故事板中的层次结构中处于完全不同的位置。

所以我的问题是: 我如何知道从哪个viewcontroller调用此方法?

我收到此警告:  尝试在窗口层次结构中显示其视图!

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

MyAppDelegate *tmpDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
id myCurrentController = tmpDelegate.myNavigationController.topViewController;
NSLog(@"%@", NSStringFromClass(myCurrentController.class));

希望这会有所帮助..

试试这个:

+ (UIViewController*) topMostController
{
    UIViewController *topController = [UIApplication sharedApplication].keyWindow.rootViewController;

    while (topController.presentedViewController) {
        topController = topController.presentedViewController;
    }

    return topController;
}