【问题标题】:Cast a viewController which segued modally in tabBar[1] in UINavigationController[1]在 UINavigationController[1] 中的 tabBar[1] 中以模态方式转换的 viewController
【发布时间】:2014-08-31 07:59:24
【问题描述】:

假设我在TabBar.viewController[1] 上有一个UINavigationController 喜欢 ->

let nav:UINavigationController = self.tabBarController.viewControllers[0] as UINavigationController

UITableViewController NavigationController.viewController[1] 一样 ->`

let mvc = nav.viewControllers[0] as UITableViewController

如果该表中有模态转接怎么办,如何转换该转接viewController 以在该视图中设置某些内容而不进行转接

如果有人可以将我的问题编辑得更清楚,那将不胜感激:)

* 更新 *

我需要做到这一点,而不需要 segue,因为在模态 segue 之后可能会出现多个 ViewController,所以我想在做任何 segue 之前设置(这就像在 tabBar viewControllers 之间设置代表,所以我们在不移动到另一个的情况下进行投射TabBar 中的 ViewController)

也许是这样的

let nav = self.tabBarController.viewControllers[1] as UINavigationController
let mvc = nav.viewControllers[1] as UITableViewController // but compiler crash `Array index out of range`
let something else to hold that ViewController from the nav

【问题讨论】:

    标签: ios uinavigationcontroller swift uitabbarcontroller segue


    【解决方案1】:

    您只需使用 segue 的 destinationViewController 属性。

    var customController =  segue.destinationViewController as YourControllerClass
    customController.delegate = self
    

    【讨论】:

    • 如果在 segue 之后有多个 ViewController 并且我想获得委托,这就像一个视图将以模态方式显示,然后另一个视图将出现在第二个视图消失时它会在 tableView 中添加一行,所以我更喜欢不使用委托并强制转换它你有什么想法吗?
    • 不,您应该使用委托模式。这是另一个问题,所以你应该先接受这个答案。
    • 我不认为这是答案,但请查看我更新的问题,如果您能提供帮助,那就太好了,谢谢
    • 您的崩溃是因为您尝试访问第二个视图控制器时只有一个。使用topViewController instaed。
    • 我知道,但我想获得topViewController 之后的视图,我认为这将是模态分隔的viewController
    猜你喜欢
    • 2015-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-06
    • 1970-01-01
    • 2021-04-23
    • 1970-01-01
    相关资源
    最近更新 更多