iphone - 将 subview 添加到窗口后无法推送模态视图?

标签 iphone ios uinavigationcontroller presentmodalviewcontroller abpeoplepickerview

在我的应用程序中,我有以下代码,第一部分在我的应用程序启动时运行,并在模态视图中显示登录屏幕。在此之前将我的 rootController 添加到窗口。

Modal View 将允许用户登录、查看条款和条件,然后如果他们接受则调用 loadMainApp 函数。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Override point for customization after application launch.
    rootController.delegate = self;
    [window addSubview:rootController.view];

    LoginViewController *_loginViewController = [[LoginViewController alloc] initWithNibName:@"LoginView" bundle:[NSBundle mainBundle]];
    self.loginViewController = _loginViewController;
    [_loginViewController release];


    UINavigationController *navi = [[[UINavigationController alloc]initWithRootViewController:loginViewController]autorelease];

    navi.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
    [loginViewController release];
    [rootController presentModalViewController:navi animated:YES];

    [self.window makeKeyAndVisible];
    return YES;
}

当用户接受条款和条件时调用下一位:

-(void)loadMainApp:(UIView *)fromView{

    [fromView removeFromSuperview];
    [window addSubview:rootController.view];
    rootController.selectedIndex = 2;
    rootController.delegate = self;

}

从这里我希望能够使用人员选择器,这是一个模态视图,我尝试使用以下代码:

 ABPeoplePickerNavigationController *picker =
        [[ABPeoplePickerNavigationController alloc]init];
        picker.peoplePickerDelegate = self;

        [rootController presentModalViewController:picker animated:YES];
        [picker release];

但是没有任何反应,当我尝试从我的 rootController 中呈现模态视图时,没有任何显示。

这似乎发生在 applicationDidFinishLaunching 中的这段代码运行之后:

LoginViewController *_loginViewController = [[LoginViewController alloc] initWithNibName:@"LoginView" bundle:[NSBundle mainBundle]];
        self.loginViewController = _loginViewController;
        [_loginViewController release];


        UINavigationController *navi = [[[UINavigationController alloc]initWithRootViewController:loginViewController]autorelease];

        navi.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
        [loginViewController release];
        [rootController presentModalViewController:navi animated:YES];

        [self.window makeKeyAndVisible];
        return YES;

如果我根本不显示登录屏幕,而只是添加我的 rootController

rootController.delegate = self;
        [window addSubview:rootController.view];

在 applicationDidFinishLaunching 函数中,当我去显示人员选择器时一切正常。

我在这里打破了一些基本的东西,或者任何人都可以发现我可能做错了什么吗?

最佳答案

您是否通过 dismissModalViewControllerAnimated: 方法正确关闭了第一个模态视图 Controller ?如果您只是从其父 View 中删除模态视图 Controller 的 View ,那么 UIKit 可能会遗留大量文书工作。

关于iphone - 将 subview 添加到窗口后无法推送模态视图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5982005/

相关文章:

ios - 如何在 Swift 4.0 中使用 DispatchQueue

iOS - 仅更改导航栏上的 backBarButtonItem 文本颜色

iphone - iPhone 的 SFTP 库?

iphone - 如何解决 "Unable to load persistent store at URL "错误?

ios - Swift:缺少参数参数

ios - 链接器命令失败 : duplicate symbol for architecture arm64

ios - 全屏 Youtube 视频后开始/结束外观转换的不平衡调用

ios - 导航 Controller subview 中的导航栏初始化到错误的位置(即使它自行修复)

iphone - NSDateFormatter dateFromString 和 iPhone 中的 24 小时格式混淆

ios - 如何处理 Xcode Storyboard中的 Misplaced View 警告?