条件:
应用程序必须具有TabbarController,NavigationController和tableVIEwControleer.
语言:Swift,Xcode 6.4
我尝试这样做的方式:
我使用故事板添加控制器和segues.
有两个segue(类型:«show(egpush)»),标识符为“registeredUser”,“notRegisteredUser”.
我编写了在NavigationController类的方法vIEwWillAppear中执行的代码.每当用户按下“设置”按钮时,它会检查用户是否已注册/登录.取决于此检查用户指向某个控制器的结果(如果他/她已注册/登录,则为绿色,否则为黄色).
我没有使用vIEwDIDLoad方法,因为用户可以随时按下“退出”按钮,应用程序必须立即将他指向黄色屏幕.
class NavigationController:UINavigationController { var userisregistred:Bool! overrIDe func vIEwDIDLoad() { super.vIEwDIDLoad()} overrIDe func vIEwWillAppear(animated: Bool) { userisregistred = UserAccauntUtil.userRegistrationCheck() if (userisregistred == false ) { self.performSegueWithIDentifIEr("notRegisteredUser",sender: self) } else if(userisregistred == true ){ self.performSegueWithIDentifIEr("registeredUser",sender: self) } }}
我遇到的问题:
加载应用程序后,按下“设置”按钮,第一次将我重定向到所需的控制器(一切正常),但是当我按“收藏夹”而不是“设置”时,再次执行vIEwWillAppear中的代码并且再次将我引导至黄色控制器,并在Navbar中的topleft上显示“Back”按钮/箭头.因此,我有许多控制器和一个后退按钮.
我只需要一个转换执行,而用户应该看到所有控制器:TabbarController,NavigationController.
也许还有另一种方法来完成这样的任务.我将不胜感激任何有用的信息和建议.
坏/简单的解决方案:
使用NotRegistedUser.swift中的代码删除“后退”按钮
class RegisteredUser: UItableVIEwController { overrIDe func vIEwDIDLoad() { super.vIEwDIDLoad() self.navigationItem.setHIDesBackbutton(true,animated:false); } overrIDe func dIDReceiveMemoryWarning() { super.dIDReceiveMemoryWarning() // dispose of any resources that can be recreated. }}
这样的解决方案只是消除了症状,但没有解决问题.
解决方法 这听起来像push segues不是你想要的.但是,嵌入segues仅限于一个Container VIEw,因此您需要插入一个中间VIEwController来处理哪个Container VIEw应该可见,具体取决于用户的注册状态.该解决方案在http://sandmoose.com/post/35714028270/storyboards-with-custom-container-view-controllers中详细说明,它是为iOS 6编写的,但应该使用如下故事板:
它利用了从VIEw Controller中获得多个“Custom”segue来绕过单个’embed’segue限制的可能性.
完整项目(目标C中,但可轻松转换为Swift)可在此处获取:https://github.com/mluton/EmbeddedSwapping.
ContainerViewController.m的内容是魔术发生的地方,根据外部触发器交换可见视图.
总结以上是内存溢出为你收集整理的根据用户是否注册/登录,通过segue过渡到某个ViewController. IOS全部内容,希望文章能够帮你解决根据用户是否注册/登录,通过segue过渡到某个ViewController. IOS所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)