首页 文章

IOS Swift Dismiss Tab Bar Controller并启动一个新的

提问于
浏览
0

长时间听众,第一次打电话 .

我正在开发一个由登录页面(View Controller)组成的应用程序,然后解散以显示带有4个选项卡的选项卡栏控制器,每个选项卡都有一个带有自己视图的导航控制器 .

我希望允许用户单击“注销”按钮,该按钮取消与选项卡栏控制器关联的所有视图,转到登录视图控制器,然后实例化新的选项卡栏控制器 . 在不关闭和创建新的选项卡栏控制器的情况下,所有选项卡视图都包含旧用户数据,因为它们填充了“ViewDidLoad”功能 . 除非有另一种方法来清除和触发“ViewDIdLoad”功能而不关闭所有视图/标签栏控制器 .

我也对其他解决方案持开放态度,因为我对IOS Swift编程非常陌生并且是自学成才 .

我的结构看起来像这样(请注意,应用程序首先进入选项卡栏控制器,如果没有找到当前用户,它将返回登录视图控制器,登录控制器在登录时自行解除):Login/Tab Bar Controller relationship

2 回答

  • 0

    故事板看起来有点令人困惑 . 我认为应用程序首先加载Tab Bar然后,登录视图控制器以模态方式呈现 . 但是,登录到Tab Bar的是什么?推送segue?我认为它没有被使用,正如你所说,登录被解雇了 .

    要销毁标签栏并从故事板中加载新标签栏,您将无法使用segues . 它更容易 . 只需将Tab Bar的新实例分配给应用程序窗口的rootViewController即可 .

    let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
    appDelegate.window!.rootViewController = theNewTabBar
    

    要实例化“theNewTabBar”,您需要在故事板中设置标识符并使用

    storyboard instantiateViewControllerWithIdentifier:
    
  • 1

    您可以存储标记以检查用户是否已登录 . 在应用程序加载时,您应该首先打开LOGIN PAGE . 但是在LOGIN PAGE中你必须检查那个标志 .

    如果它是真的而不是页面应直接重定向到TAB BAR . 如果它比成功登录时为假,则应设置标记为真 . 在log OUT你应该POP TABBAR并设置Flag False .

    这是更好的结构 . 对于设置应用程序范围的标志,你应该存储bool是用户默认值 . 这是存储标志和获取标志的功能 .

    //for set Bool
    class func setUserDefaultBool (value : Bool, key : String){
           UserDefaults.standard.set(value, forKey: key)
           UserDefaults.standard.synchronize()
    }
    
    //for get 
    class func getUserDefaultBOOLForKey (key: String) -> Bool{
          return UserDefaults.standard.bool(forKey: key)
    }
    

相关问题