【问题标题】:how to perform navigation[segue] from midle of the flow + ios application如何从流程中间执行导航 [segue] + ios 应用程序
【发布时间】:2014-11-14 08:56:36
【问题描述】:

我正在开发基于导航的应用程序。我用故事板来设计我的界面。我也使用登录功能。所以在应用程序委托类中,我会根据登录状态检查用户登录的天气,我正在加载主页或登录页面。

我的问题是,当我打开这样的视图控制器时,我的其他功能不起作用。

例如,我在主页中有一个按钮,可以将其推送到另一个视图。当应用程序从主页启动时,按钮不起作用。[不推送到所需的视图]。所以我以编程方式尝试了它,但效果不佳。

这就是我的故事板的样子

这是我的应用程序委托代码,根据登录状态打开应用程序

NSUserDefaults* userinfo = [NSUserDefaults standardUserDefaults];
NSString* customer =[userinfo stringForKey:@"username"];

if((customer!=nil)){
    //redirect to diferent pages
   // DetailPageClass *detailPage = [[DetailPageClass alloc] initWithNibName:@"DetailPageClass" bundle:nil];
    UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle: nil];
    Home *home = (Home *)[mainStoryboard instantiateViewControllerWithIdentifier:@"home"];
    //LoginView *login = (LoginView *)[mainStoryboard instantiateViewControllerWithIdentifier:@"login"];
    home.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    self.window.rootViewController = home;
    [self.navController pushViewController:home animated:YES];
}else{
    UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle: nil];
    LoginView *login = (LoginView *)[mainStoryboard instantiateViewControllerWithIdentifier:@"login"];
    login.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    self.window.rootViewController = login;
    [self.navController pushViewController:login animated:YES];
}

我试图推送到如下视图(以编程方式)

UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle: nil];
SignUp *login = (SignUp *)[mainStoryboard instantiateViewControllerWithIdentifier:@"signUp"];
//UINavigationController *passcodeNavigationController = [[UINavigationController alloc] initWithRootViewController:login];
// [self.navigationController presentModalViewController:passcodeNavigationController animated:YES];
[self.nav pushViewController:login animated:YES];

谁能告诉我如何以正确的方式做到这一点。我在这里遇到了什么问题..请帮助我

谢谢。

【问题讨论】:

    标签: ios objective-c iphone uinavigationcontroller segue


    【解决方案1】:

    您可以将window.rootViewController 设置为navController,这应该可以。

    【讨论】:

    • 所以其他功能还是不行? UINavigationController *navCtl = [[UINavigationController alloc] init]; self.window.rootViewController = navCtl; [navCtl pushViewController:home animated:YES]; 这对我有用。
    • 我收到此错误:由于未捕获的异常“NSGenericException”而终止应用程序,原因:“只有当源控制器由 UINavigationController 的实例管理时,才能使用推送序列。
    • 那是因为做push的控制器不在导航栈上,nav->A->B->C,这样可以正常工作,A->B->C会出问题,您需要通过注销self.navigationController 来检查控制器的导航控制器是否为零。
    • 如果 self.navigationControler 为 nill 怎么办?我该怎么办?
    • 看上面的评论,window的rootViewController是一个导航控制器。所以home的navigationController不会是nil。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-05
    • 2022-10-25
    • 1970-01-01
    相关资源
    最近更新 更多