我试图设置一个登录屏幕(ViewController
),该屏幕在成功登录后导致本身是导航的一部分的用户列表(UserTableViewController
)控制器。在随后的屏幕上,如UserTableViewController
应该可以注销。这会使用户回到初始登录屏幕ViewController
。我真的很难以正确的方式连接这些屏幕。必须说,我没有很多与不同类型的塞格斯和/或代表这样的经验,具有一定的研究完成后,我去了一些试验:基本:正确连接多个(视图)控制器
- 上
ViewController
成功登录触发modal-segue到导航控制器(本身导致UserTableViewController
) UserTableViewController
有一个注销按钮,可以触发另一个模式继续回到ViewController
。我采取了这些模态赛段,因为首先,我不希望有一个导致自动创建的后退按钮或类似的层次结构,其次,我不想在这两个屏幕之间产生任何“麻烦”,其中一个导航控制器,而另一个没有。
......看起来这不是一种方法。一个循环之后有些事情会混淆,而屏幕正在改变错误的方式。我想一个莫代尔 - 塞格罗圈是不可能的,因为至少必须有父母和孩子。下一步试验:
- 上
ViewController
成功登录后,触发模式-SEGUE /推SEGUE导航控制器(本身导致UserTableViewController
) - 要返回到登录界面我来实现,而不是代表在点击“注销”时触发的另一个细分 - 在这里,我面临的问题是,我无法正确设置
UserTableViewController
的代表preparingForSegue
的ViewController
。此时segue.destinationViewController
无法降频为UserTableViewController
,但仅限于NavigationController
什么不允许我在目的地设置代表(UserTableViewController
)。
第三审判是做同样像第二种方法,但实现从ViewController
直接UserTableViewController
一个SEGUE。这可能工作,但现在我没有任何导航栏了,在我的UserTableViewController
...!
当然,我可以在第三种解决方案中进行手动修复,例如插入独立导航栏,但这两种方式似乎都不是很有效。因此,我非常感谢一些提示,强调我在一方面被误解(完全),并在另一方面展示了一种很好的方式。非常感谢您的帮助!
编辑: 我可以尝试设置导航控制器作为初始视图控制器,然后才让登录屏幕ViewController
呈现/由UserTableViewController
驳回 - 是一条可行之路还是有广为人知的最佳实践为那些登录查看场景?
只是一种视觉帮助:
感谢您的意见,我一直在努力!无论如何,我很好奇,如果有一种常用的方式来处理登录屏幕,从实际角度来看,初始视图控制器,但不是导航堆栈的一部分。当一个注销它返回 - 我想知道这个周期内的什么样的关系是最好的...此外,我想知道如何在这种情况下实现一个委托,导航控制器“阻止向下转换” 。 @Nicky – 2014-09-12 21:23:40
我相信这个导航实际上不应该是这两个控制器中的任何一个的责任,而是一些负责应用程序流的协调器对象。如果你有一个场景需要你将用户登录到导航控制器的层次结构中?例如,他们的令牌过期了,您需要他们再次登录。 – Nicky 2014-09-12 21:35:28
无论如何,首选的方法是让呈现控制器知道(通过委托或其他方式)呈现的控制器已完成其工作,因此它可以处理解雇。毕竟,进一步在导航中的控制器不应该真正意识到它在屏幕上的显示。 – Nicky 2014-09-12 21:39:18