麻烦内UITabViewController

问题描述:

我的应用程序是围绕一个的UITabBarController和第一视图控制器中我试图呈现一个内置内VC从呈现视图控制器“设置视图”的用户,但出于某种原因,如果这个设置视图被呈现超过一旦所有按钮停止运行并且应用程序彻底崩溃。麻烦内UITabViewController

在FirstViewController.m我:

- (IBAction)showSettings:(id)sender 
{ 
    UIViewController *settingsView = [self.storyboard instantiateViewControllerWithIdentifier:@"SettingsViewController"]; 

    UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:settingsView]; 
    [self.navigationController presentViewController:nav animated:YES completion:nil]; 
} 

其连接到一个UIButton标有 “设置”。

在SettingsViewController.m我:

- (IBAction)done 
{ 
    NSLog(@"DONE"); 

    [self.navigationController dismissViewControllerAnimated:YES completion:nil]; 
} 

其连接到一个UIButton标有“做”在SettingsViewController的左上角。

我第一次按“设置”,然后“完成”它没有问题,但如果我再次按下“设置”按钮,“完成”按钮完全失去功能(完全不可点击),用户*重新启动应用程序才能继续使用它。

我的控制台打印此当应用程序加载时,我相信概括了问题:

Unbalanced calls to begin/end appearance transitions for 
<UITabBarController: 0x7f97f5f1e780> 

但是,如果我尝试让“TabBarController”的实例,目前认为这样,我只是得到一个错误,我试图提出一个不在层次结构中的VC ...

我只是不确定在UITabBarController中呈现/关闭视图控制器的适当方式是什么,但不是我的应用程序缺少基本功能。我不明白为什么FirstViewController不能正常显示视图。

任何帮助是极大的赞赏,这是一个非常恼人的错误,我不能够在网上找到一个可行的解决方案其他地方。让我知道我是否应该提供更多的信息/代码

编辑:到的UITabBarController

改变错字UITabViewController
+0

小点:有一个UITabViewController没有这样的事情。 – matt

+0

你说'self.navigationController'很奇怪。您尚未在视图控制器层次结构中解释此导航控制器的位置。 – matt

+0

有没有理由试图用'SettingsViewController'来演示和解除'UINavigationController'? –

看来你设定的辞退导航控制器,而不是设置视图控制器。尝试使用self.dismiss代替self.navigationcontroller.dismiss

+0

我试过这个,当我看到你的答案时再试一次。它不会改变功能,我描述的问题依然存在。 – Tanner

的我不明白为什么你实例化一个导航控制器。 只需模态显示。它应该工作。 你需要一个“回去”的外观和感觉?

如果你已经在你的层次,你可以把设置的导航控制器。

反正:当你这样做:

UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:settingsView]; 
[self.navigationController presentViewController:nav animated:YES completion:nil]; 

在第一线,你在第二个创建一个局部变量 您使用的自我。 self.navigationController

1)谁拥有 “导航”?

2)如果你已经有了一个导航控制器(如self.navigationController显示..或者是NIL?)为什么要使用“导航”?

+0

对不起,如果这是粗鲁的,但你的答复诚实不是我的问题的答案。这是一条评论。 Self.navigation不是零。我已经在另一个评论中说过这一点,但如果我不使用* nav并调用'[self presentViewController:settingsView animated:YES completion:nil];'我得到错误'应用程序尝试以模态方式呈现活动控制器。如果你对我如何能够改变我的代码有一个想法,那么我就会全神贯注。回答你的第一个问题,是的,我需要一个“回头”的外观和感觉。你是什​​么意思“简单地显示模态”?不是我在做什么? – Tanner

你定义根视图控制器导航push和pop两个

@property (strong, nonatomic) UIWindow *window; 
@property (strong, nonatomic) UINavigationController *navController; 

self.navController = [[UINavigationController alloc] initWithRootViewController: objcReg]; 
self.navController.navigationBarHidden =YES; 

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] ; 
self.window.rootViewController = self.navController; 
[self.window makeKeyAndVisible]; 

//[self.navigationController presentViewController:objectofViewCantroller animated:YES completion:NULL]; 
//[self.navigationController popViewControllerAnimated:YES]; 
+0

获取错误'应用程序试图以模态方式呈现主动控制器“,但我对一些事情感到困惑。首先,我是否正确地将第一个和最后两行代码放在ViewDidLoad for FirstViewController中?什么是objcReg?它应该是FirstViewController吗?也混淆了为什么最后两行被注释掉。谢谢! – Tanner

+0

最后2行是评论哪个你想弹出或推动你可以取消注释该行并使用它。 objcReg是控制器对象,您想要在我的答案中解释帽子时,可以按下或弹出对话框 – AmitTiwari