gpt4 book ai didi

ios - 基于页面的界面使用多个相同的 View Controller

转载 作者:可可西里 更新时间:2023-11-01 05:40:47 25 4
gpt4 key购买 nike

我想在 WatchKit 中创建一个基于页面的界面。

docs声明必须创建多个界面 Controller 并将它们链接起来以创建基于页面的界面。

假设我有几个对象,我想为每个对象在 watch 上显示信息。然后我想使用基于页面的导航来滑动到下一个项目。所有项目都使用相同的接口(interface) Controller ,只是数据不同。

有什么办法可以实现吗?

最佳答案

假设您为每个页面关联了相同的 InterfaceController,要将不同的数据传递给每个页面,请遵循以下步骤:

  1. 创建一个初始 View Controller ,它会像一个飞溅您的应用的屏幕。
  2. 在初始 View Controller 的“willActivate”中,创建一个数组页面和一组包含您需要传递的数据的上下文到每个页面(interfaceViewControllers)。
  3. 调用 WKInterfaceController.reloadRootControllersWithNames(pages,上下文:pageContexts)。
  4. 在您的公共(public) InterfaceController 的“awakeWithContext”中为每个页面,阅读上下文并初始化属性/数据。

点号3 基本上保证了你的页面显示的时候就像直接启动一样。您的另一个选择是使用 self.presentControllerWithNames,但这会在左上角显示一个“取消”按钮。

示例代码:在 SplashScreen 界面 Controller 中

override func willActivate() {
super.willActivate()
let pages = ["page1","page2","page3","page4"]
let pageContexts = [["data1":0,"data2":0],["data1":38,"data2":1],["data1":49,"data2":1],["data1":74,"data2":2]]
WKInterfaceController.reloadRootControllersWithNames(pages, contexts: pageContexts)
}

在页面界面 Controller

override func awakeWithContext(context: AnyObject?) {
super.awakeWithContext(context)

if let contextDict:Dictionary = context as Dictionary<String,AnyObject>!
{
data1 = contextDict["data1"] as Int
data2 = contextDict["data2"] as NSTimeInterval
}
}

关于ios - 基于页面的界面使用多个相同的 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28529090/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com