长时间听众,第一次打电话 .
我正在开发一个由登录页面(View Controller)组成的应用程序,然后解散以显示带有4个选项卡的选项卡栏控制器,每个选项卡都有一个带有自己视图的导航控制器 .
我希望允许用户单击“注销”按钮,该按钮取消与选项卡栏控制器关联的所有视图,转到登录视图控制器,然后实例化新的选项卡栏控制器 . 在不关闭和创建新的选项卡栏控制器的情况下,所有选项卡视图都包含旧用户数据,因为它们填充了“ViewDidLoad”功能 . 除非有另一种方法来清除和触发“ViewDIdLoad”功能而不关闭所有视图/标签栏控制器 .
我也对其他解决方案持开放态度,因为我对IOS Swift编程非常陌生并且是自学成才 .
我的结构看起来像这样(请注意,应用程序首先进入选项卡栏控制器,如果没有找到当前用户,它将返回登录视图控制器,登录控制器在登录时自行解除):Login/Tab Bar Controller relationship
2 回答
故事板看起来有点令人困惑 . 我认为应用程序首先加载Tab Bar然后,登录视图控制器以模态方式呈现 . 但是,登录到Tab Bar的是什么?推送segue?我认为它没有被使用,正如你所说,登录被解雇了 .
要销毁标签栏并从故事板中加载新标签栏,您将无法使用segues . 它更容易 . 只需将Tab Bar的新实例分配给应用程序窗口的rootViewController即可 .
要实例化“theNewTabBar”,您需要在故事板中设置标识符并使用
您可以存储标记以检查用户是否已登录 . 在应用程序加载时,您应该首先打开LOGIN PAGE . 但是在LOGIN PAGE中你必须检查那个标志 .
这是更好的结构 . 对于设置应用程序范围的标志,你应该存储bool是用户默认值 . 这是存储标志和获取标志的功能 .