insertRowAtIndexes watchKit Swift
insertRowAtIndexes watchKit Swift
我有一个结构
struct Question {
var title: [String]
var additionalInfo: String?
var answers: [String]
}
和我添加数据的变量
var questions = [
Question(title: ["What is the color of?", "additional color information"], additionalInfo: nil, answers: [
"Blue",
"Gray"
])
]
此数据加载到 AppleWatch 的 tableView
中。两种行类型分开 - TitleRowType
(对于标题数组)和 AnswersRowType
(对于答案数组)。
当我将值插入 struct's
数组时 - 我希望 tableView
中的行插入动画。
我知道有一个 insertRowAtIndexes
函数,但我无法理解它。 Apple 文档中提供的示例对我不起作用。这就是我想出的:
let indexSet = NSIndexSet(index: Int) // Int is passed via the function
tableView.insertRowsAtIndexes(indexSet, withRowType: "TitleRowType")
但是当我 运行 它时 - table 不会更新。
期待您的指点。
您必须执行 3 个步骤:
- 将新数据添加到您的数组
- 在 table
中插入一行
- 用新数据填充行
这是一个简单的例子:
class InterfaceController: WKInterfaceController {
@IBOutlet var table: WKInterfaceTable!
var items = ["row1", "row2", "row3"]
override func awakeWithContext(context: AnyObject?) {
super.awakeWithContext(context)
loadTable()
}
func loadTable() {
table.setNumberOfRows(items.count, withRowType: "tableRow")
var rowIndex = 0
for item in items {
if let row = table.rowControllerAtIndex(rowIndex) as? TableRowController {
row.label.setText(item)
}
rowIndex++
}
}
@IBAction func insertRow() {
items.append("row4")
let newIndex = items.count
table.insertRowsAtIndexes(NSIndexSet(index: newIndex), withRowType: "tableRow")
if let row = table.rowControllerAtIndex(newIndex) as? TableRowController {
row.label.setText(items[newIndex])
}
}
}
TableRowController
是一个 NSObject
子类,它有一个 WKInterfaceLabel
出口来显示行数。
我用了一个按钮触发insertRow()
我有一个结构
struct Question {
var title: [String]
var additionalInfo: String?
var answers: [String]
}
和我添加数据的变量
var questions = [
Question(title: ["What is the color of?", "additional color information"], additionalInfo: nil, answers: [
"Blue",
"Gray"
])
]
此数据加载到 AppleWatch 的 tableView
中。两种行类型分开 - TitleRowType
(对于标题数组)和 AnswersRowType
(对于答案数组)。
当我将值插入 struct's
数组时 - 我希望 tableView
中的行插入动画。
我知道有一个 insertRowAtIndexes
函数,但我无法理解它。 Apple 文档中提供的示例对我不起作用。这就是我想出的:
let indexSet = NSIndexSet(index: Int) // Int is passed via the function
tableView.insertRowsAtIndexes(indexSet, withRowType: "TitleRowType")
但是当我 运行 它时 - table 不会更新。 期待您的指点。
您必须执行 3 个步骤:
- 将新数据添加到您的数组
- 在 table 中插入一行
- 用新数据填充行
这是一个简单的例子:
class InterfaceController: WKInterfaceController {
@IBOutlet var table: WKInterfaceTable!
var items = ["row1", "row2", "row3"]
override func awakeWithContext(context: AnyObject?) {
super.awakeWithContext(context)
loadTable()
}
func loadTable() {
table.setNumberOfRows(items.count, withRowType: "tableRow")
var rowIndex = 0
for item in items {
if let row = table.rowControllerAtIndex(rowIndex) as? TableRowController {
row.label.setText(item)
}
rowIndex++
}
}
@IBAction func insertRow() {
items.append("row4")
let newIndex = items.count
table.insertRowsAtIndexes(NSIndexSet(index: newIndex), withRowType: "tableRow")
if let row = table.rowControllerAtIndex(newIndex) as? TableRowController {
row.label.setText(items[newIndex])
}
}
}
TableRowController
是一个 NSObject
子类,它有一个 WKInterfaceLabel
出口来显示行数。
我用了一个按钮触发insertRow()