【问题标题】:Dynamic page-based Apple Watch app基于动态页面的 Apple Watch 应用
【发布时间】:2015-01-16 06:55:49
【问题描述】:

我尝试创建一个基于页面的 Apple Watch 应用。

据我所知,您可以在情节提要中为您的应用创建固定数量的页面。

所以我只是想知道是否有任何方法可以根据加载的数据以编程方式为您的应用动态创建页面?

即:一个报纸应用程序,用户可以在其中左右滑动以切换到不同的文章。

谢谢

【问题讨论】:

  • 你有解决办法吗??
  • @BandishDave 我没有机会回到这个问题,但上次我检查时,没有完美的解决方案。

标签: ios objective-c swift watchkit


【解决方案1】:

您可以从代码中呈现基于页面的导航。您可以指定任意数量的页面,但这些页面必须在 Storyboard 中设计

func presentControllerWithNames(names: [AnyObject], contexts: [AnyObject]?) // modal presentation of paged controllers. contexts matched to 

示例

为对象提供Page 接口。此代码显示每个对象的页面

let objects  = ["1", "2", "3", "4", "5"]
let controllers = Array(count: objects.count, repeatedValue: "Page")
presentControllerWithNames(controllers, contexts: objects)

为不同的对象对象呈现不同的界面。

let objects  = [1, 2, 3, 4, 5]
let controllers = objects.map { object  in object % 2 == 0 ? "Even-Page" : "Odd-Page" }
presentControllerWithNames(controllers, contexts: objects)

【讨论】:

  • 感谢您的解决方案,它奏效了。但是该方法实际上显示了一个基于页面的模式视图,因此屏幕上有一个取消按钮。有什么办法可以去掉那个取消按钮,改成我们自己的按钮?
  • 不,没有。至少目前@LeonNguyen
  • @LeonNguyen 作为临时解决方法,您可以在您提供的 WKInterfaceController 上调用 [self setTitle:""]。这会将“取消”按钮更改为空字符串,但不幸的是,它仍然可以选择。同样在当前的 beta 5 中,您会在控制器出现时看到取消按钮一秒钟。要使其完全不可见,您必须将 IB 中的“标题”字段设置为空格字符串。
  • 它只是这个答案的补充。请参考此链接:techotopia.com/index.php/…
【解决方案2】:

在根接口控制器的 awakeWithContext 方法中,使用 WKInterfaceController.reloadRootControllersWithNames 类方法。

let objects  = ["1", "2", "3", "4", "5"]
let controllers = Array(count: objects.count, repeatedValue: "Page")
WKInterfaceController.reloadRootControllersWithNames(controllers, contexts: objects)

【讨论】:

  • 它对我不起作用。我需要在情节提要中手动添加接口控制器吗?
【解决方案3】:

我无法得到这些答案,因为我遗漏了一个重要部分,您需要创建第二个接口控制器,并将其标识符作为控制器名称。更多信息请看这里:https://stackoverflow.com/a/28955247/945247

【讨论】:

    猜你喜欢
    • 2019-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-16
    • 1970-01-01
    相关资源
    最近更新 更多