Ios 根据用户是否已注册/登录,通过segue转换到某个ViewController。国际标准化组织
我需要创建和应用程序,虽然加载不需要用户注册,但用户可以使用有限的应用程序功能。如果用户已注册/登录,我们需要向他展示更多功能 条件: 应用程序必须具有TabBarController、NavigationController和TableViewControleer。 语言:Swift,Xcode 6.4 我尝试这样做的方式: 我使用故事板添加控制器和分段 有两个序列(类型:«show(例如push)»),标识符为«registeredUser»和«notRegisteredUser»。 我已经编写了在NavigationController类的方法viewWillDisplay中执行的代码。每次用户按下“设置”按钮时,它都会检查用户是否已注册/登录。根据该检查的结果,将用户定向到特定控制器(如果他/她已注册/登录,则为绿色,如果未注册,则为黄色)。 我没有使用viewDidLoad方法,因为用户在任何时候都可以按下按钮“退出”,应用程序必须立即将他引导到黄色屏幕Ios 根据用户是否已注册/登录,通过segue转换到某个ViewController。国际标准化组织,ios,swift,viewdidload,Ios,Swift,Viewdidload,我需要创建和应用程序,虽然加载不需要用户注册,但用户可以使用有限的应用程序功能。如果用户已注册/登录,我们需要向他展示更多功能 条件: 应用程序必须具有TabBarController、NavigationController和TableViewControleer。 语言:Swift,Xcode 6.4 我尝试这样做的方式: 我使用故事板添加控制器和分段 有两个序列(类型:«show(例如push)»),标识符为«registeredUser»和«notRegisteredUser»。 我已经
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)
}
}
}
我遇到的问题:
加载应用程序并按下“设置”按钮后,我第一次被重定向到所需的控制器(一切正常),但当我按下“收藏夹”,然后再次按下“设置”按钮时,将再次执行ViewWillbeen中的代码,并将我再次指向黄色控制器,同时返回显示在导航栏左上角的按钮/箭头。因此,我有许多控制器和一个后退按钮
我只需要执行一个转换,而用户应该看到所有控制器: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.
}
}
这种解决方案只是消除了症状,但并不能解决问题。听起来,推送序列不是您想要的。但是,嵌入分段仅限于单个容器视图,因此您需要插入一个中间ViewController,以根据用户的注册状态处理哪个容器视图应该可见 该解决方案详细介绍了它是为iOS 6编写的,但应使用以下情节提要: 它利用了从视图控制器获得多个“自定义”分段的可能性,以绕过单个“嵌入”分段的限制 完整的项目(在目标C中,但很容易翻译成Swift)可在以下位置获得:
的内容是魔术发生的地方,基于外部触发器交换可见视图。如果在执行序列之前使用
popToRootViewControllerAnimated:
使导航堆栈进入干净状态,会怎么样?(或者,稍微复杂一点,popToViewController:animated:
如果您想要的在堆栈上,则清理堆栈并继续。)感谢您的建议,但我没有使用这些方法,因此我没有RootViewController。popToRootViewControllerAnimated和popToViewControllerAnimated-无处可去。我的故事板可以在这里查看。