在不在apple watch中工作的interfacecontrollers之间传递数据

时间:2015-04-17 06:14:58

标签: ios iphone watchkit apple-watch

This is the way i have my view controllers

我正在使用此代码在控制器之间传递数据。

InterfaceController.reloadRootControllersWithNames(["1","2","3"], contexts: ["adf","asd","asd"])

我在willActivate()方法中调用了这段代码,你可以在这里看到。

 override func willActivate() {
        // This method is called when watch view controller is about to be visible to user
        super.willActivate()
        InterfaceController.reloadRootControllersWithNames(["1","2","3"], contexts: ["adf","asd","asd"])
    }

我不知道这个代码有什么问题,在苹果手表中,应用程序只是一次又一次地刷新。在我们使用基于页面的导航时,是否还有其他方法可以在接口控制器之间传递数据。??

3 个答案:

答案 0 :(得分:1)

请在监视应用程序(Watch os 2及更高版本)中找到以下基于分页导航传递数据的方式。

注意:

  

一个字符串数组,每个字符串都包含要在基于页面的界面中显示的接口控制器的名称。在故事板中,接口控制器的名称存储在对象的Identifier属性中,该属性位于属性检查器中。数组中字符串的顺序用于设置相应接口控制器的顺序。此参数不能为nil或空数组。

目标C

let controller = ["FirstViewController","SecondViewController","ThirdViewController"]
    let pageContexts:[AnyObject]? = ["adf","asd","asd"]

    presentControllerWithNames(controller, contexts: pageContexts)

夫特

self.tableView.allowsSelection = NO

答案 1 :(得分:0)

如果您将reloadRootControllersWithNames(NSArray, contexts: NSArray)调用到视图控制器上,它将按照函数标题执行:reload.因此,您有一个视图控制器可刷新您给出的第一个数组中的所有3个项目,然后,由于您当前view controller在加载时调用willActivate(),因此无限刷新。

我没有足够的声誉来发表评论,但我的建议是找到一种方法,您可以调用您想要的监视界面实例来传递数据。

我的意思是,如果您将每个接口都作为自己的类,那么您可以在您希望的接口中创建一个方法,该方法将属性设置为您要传输的任何数据在你展示界面之前。

我还使用Objective-C而不是Swift,但是我猜这是Obj-C代码会出现的内容:

SecondWatchInterface *secondWatchInterface = [SecondWatchInterface new];
[SecondWatchInterface setSomeDataWithAStringValue:@"Foo"];
[self presentWatchInterface:SecondWatchInterface]

在Swift中,我认为这等同于:

SecondWatchInterface *secondWatchInterface = SecondWatchInterface.new()
secondWatchInterface.setSomeDataWithAStringFile:"Foo"
presentWatchInterface(secondWatchInterface)

我自己不熟悉WatchKit;我通常使用SpriteKit。我希望至少可以帮助确定问题所在!

答案 2 :(得分:0)

要在接口控制器之间传递数据,您需要使用此方法:

presentControllerWithName(“Second Watch Controller”, context: [“segue”:“pagebased”,“data”: "Data Passed Successfully”]);

此外,您可以参考此示例:http://www.informit.com/articles/article.aspx?p=2272657&seqNum=3