Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xcode 如何在WatchKit中重用WKInterfaceTable_Xcode_Watchkit_Apple Watch - Fatal编程技术网

Xcode 如何在WatchKit中重用WKInterfaceTable

Xcode 如何在WatchKit中重用WKInterfaceTable,xcode,watchkit,apple-watch,Xcode,Watchkit,Apple Watch,我为我的WatchKit应用程序选择了基于页面的布局。每页显示一个表格。我希望在所有页面上保持表的布局完全相同。我将在运行时向每个页面提供过滤后的数据,因此页面基本上是相同的,只是数据不同 实现这一点的一种方法是为InterfaceBuilder中的每个页面手动创建InterfaceController实例,然后使用GUI元素填充并连接插座。这里的问题是,每当我想改变一些东西,比如说,移动一个标签或添加一个按钮,我都必须将这些改变一致地应用到每一页 此外,对于每个页面,我必须将插座连接到表行控制

我为我的WatchKit应用程序选择了基于页面的布局。每页显示一个表格。我希望在所有页面上保持表的布局完全相同。我将在运行时向每个页面提供过滤后的数据,因此页面基本上是相同的,只是数据不同

实现这一点的一种方法是为InterfaceBuilder中的每个页面手动创建InterfaceController实例,然后使用GUI元素填充并连接插座。这里的问题是,每当我想改变一些东西,比如说,移动一个标签或添加一个按钮,我都必须将这些改变一致地应用到每一页

此外,对于每个页面,我必须将插座连接到表行控制器,基本上一遍又一遍地重复我自己。下面是一个例子:

有没有办法重复使用一张桌子


我考虑了继承,但它告诉我不要将WKInterfaceTable子类化。这也排除了以编程方式创建表的可能性。

要实现这一点,请在reloadRootControllersWithNames:context:中多次提供相同的WKInterfaceController,但为每个控件提供不同的上下文。

您应该创建一个包含表和各种行类型的接口控制器。然后你想创建一个与我的答案非常相似的架构。您只有一个PageOneInterfaceController,在本例中应命名为TableInterfaceController,标识符为TableInterfaceIdentifier。然后您将执行以下操作:

MainInterfaceController.swift


这将使用在相应上下文中显示所有数据的同一接口控制器重新加载页面集。

它是否适用于基于页面的接口?你能给我举个例子吗?我正在阅读文档界面导航,你的建议似乎只适用于层次化界面。搞定了。谢谢你的参与。太棒了@比尔汉姆:我知道你说的基本上是一样的,但举个例子真的很有帮助。
func awakeWithContext(context: AnyObject?) {
    super.awakeWithContext(context)

    let context1 = "context 1 - for you to fill out"
    let context2 = "context 2 - for you to fill out"
    let context3 = "context 3 - for you to fill out"

    WKInterfaceController.reloadRootControllersWithNames(
        ["TableInterfaceIdentifier", "TableInterfaceIdentifier", "TableInterfaceIdentifier"], 
        contexts: [context1, context2, context3]
    )
}