使用标签栏视图控制器

时间:2017-02-22 01:29:17

标签: ios uiviewcontroller swift3 uitabbarcontroller

我正在开发基于UITabBarController的应用。该应用程序具有"用户身份验证/限制"特定标签可能在任何时间点受限制/不受限制(通过管理员)。

受限制时,"身份验证"视图显示在选项卡的当前视图中。这只是通过故事板segue方式完成,并以" Kind" "现在模态"和"演示" "过度的内容"

只要用户在"身份验证"之前没有导航到不同的标签,一切都会正常工作。在授予授权后呈现并返回视图,在这种情况下,呈现视图为空白

在目前的表单中,我使用身份验证视图viewDidLoad来检查用户是否受到限制,如果他们不是,我就会触发返回segue到父视图,这意味着如果选项卡被限制但变得不受限制,则可以自动关闭身份验证视图

Normal View Authorisation Requested Navigate away and back again Blank View

所以,事件的顺序

  1. 用户导航到可能受限制的"选项卡/视图
  2. 限制状态需要身份验证,显示身份验证视图
  3. 用户导航到其他选项卡并再次返回并输入身份验证(或限制被取消)并且身份验证视图被取消
  4. 父视图为空白
  5. 我在如何解决这个问题上输了。

    我已尝试过(在父视图的展开segue方法中)

      父视图中的
    • view.setNeedsLayout()view.setNeedsDisplay()以响应来自身份验证视图的segue事件
    • 我试过navigationController?.popToViewController(self, animated: false)
    • 我尝试过再次弹出视图
    • 我已尝试table.reloadData()(是的,父视图只是UITableViewController
    • 我尝试删除并重新添加view,但可能做错了

    我在试图让视图控制器执行完全刷新/重新加载时智慧结束

    更新

    我已经能够设计" a"解决方案,基本上在身份验证视图中调用viewWillDisappear时,我执行特殊的"未经授权的解雇" segue,其目的是告诉父视图认证视图已被解除,但未进行身份验证,让它知道它不应该尝试更新自身,但也不要尝试重新进行身份验证。

    这允许父级viewDidAppear方法在其可见后再次处理身份验证过程。

    它对我有用,但我愿意接受更多想法

0 个答案:

没有答案