【问题标题】:Connecting instance of custom ViewController to a view将自定义 ViewController 的实例连接到视图
【发布时间】:2014-07-06 20:17:27
【问题描述】:

我正在斯坦福大学的 Swift iOS 课程中从事纸牌匹配游戏项目。我在标签栏上有两个 ViewController,用于 2 种不同类型的纸牌游戏,它们推送到同一个视图,显示移动历史。我想要每个游戏的单独移动历史记录,因此在 2 个游戏类型的 ViewController 中创建了一个不同的 HistoryViewController 实例。然后我在移动时操纵这些实例。从正确的父级导航时,如何告诉 Xcode 使用 HistoryViewController 的特定实例?例如,如果我在第一个纸牌游戏中并按“历史”,则在纸牌游戏 1 的代码中初始化的 HistoryViewController 应该显示在历史视图中。

我附上了故事板的图片。任何帮助将不胜感激:)

【问题讨论】:

    标签: ios cocoa swift


    【解决方案1】:

    您可以从两个视图控制器推送历史视图控制器。因为它们都会生成历史视图控制器的不同实例。由于 segue 不同,您可以给它们起不同的名称并执行 self.performSegueWithIdentifier("push1", sender: self) 和 @987654323 @或者直接push就可以了。

    您可以为历史创建labeltextview 并传递您要在其中显示的信息

    override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {
        if (segue.identifier == "push1") {
            let viewController:ViewController = segue!.destinationViewController as ViewController
            // pass data to next view
            viewController.label = @"history for 1st view controller"
        }
        else if (segue.identifier == "someanothersegue") {
           //Perform some another task for any other segue
        }
    }
    

    通过这种方式,您可以将数据传递给目标视图控制器,在您的情况下,它是历史视图控制器。

    【讨论】:

    • 感谢您的帮助,因为 prepareForSegue 在父 VC 中,所以不需要 if 语句,而我只是获取目标 VC 并更改其属性。如果可以将目标 VC 更改为 VC 的特定实例,那就太好了,但这是可行的。谢谢:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-16
    • 2016-06-03
    • 1970-01-01
    相关资源
    最近更新 更多