如果已选择WKInterfaceTable,我想更改一行的颜色。我已经完成了这些步骤,但我不知道如何更进一步:
override func table(table: WKInterfaceTable, didSelectRowAtIndex rowIndex: Int) {
let row = tableView.rowControllerAtIndex(rowIndex) as! TableRowObject
}
我希望你们中的某些人能帮助我做到这一点。
答案 0 :(得分:5)
您可以根据行选择更改颜色
在rowController中创建WKInterfaceGroup的IBOutlet,并使用默认组将其设置为Storyboard,将表格拖到故事板时创建(无需添加新的WKInterfaceGroup)。
@property (weak, nonatomic) IBOutlet WKInterfaceGroup *rowGroup;
创建一个BOOL属性以跟踪rowController中的选择状态。
@property (nonatomic, readwrite) BOOL isSelected;
将此添加到didSelectRow,
- (void)table:(WKInterfaceTable *)table didSelectRowAtIndex:(NSInteger)rowIndex {
TableRowObject *row = [self.interfaceTable rowControllerAtIndex:rowIndex];
if (row.isSelected) {
row.isSelected = NO;
[row.rowGroup setBackgroundColor:[UIColor clearColor]];
}
else {
row.isSelected = YES;
[row.rowGroup setBackgroundColor:[UIColor blueColor]];
}
}
答案 1 :(得分:1)
您可以通过向行控制器添加WKInterfaceGroup
来执行此操作。使组的宽度和高度“相对于容器”的大小为1.这可确保组完全填充您的行。然后,您可以使用WKInterfaceGroup
上的setBackgroundColor:方法设置背景颜色。添加此新组中的所有其他控件。
答案 2 :(得分:1)
@property (weak, nonatomic) IBOutlet WKInterfaceGroup *groupCellContainer;
Create above property in your custom cell for the Group in your cell and connect it with watch interface storyboard.
Add below code in your didSelectRowAtIndex method, this code will set Red background color to selected cell & set Gray color to other cells.
- (void)table:(WKInterfaceTable *)table didSelectRowAtIndex:(NSInteger)rowIndex {
for (int row=0; row < Array.count; row++) {
CustomCell *customCell = [table rowControllerAtIndex:row];
if (rowIndex == row) {
[customCell.groupCellContainer setBackgroundColor:[UIColor redColor]];
} else {
[customCell.groupCellContainer setBackgroundColor:[UIColor grayColor]];
}
}
}
答案 3 :(得分:0)
我认为你必须在Storyboard中设置背景颜色。
高度理论,自己从未这样做过:
如果你有一个更具动态性的应用程序,你可能会创建两个原型行并给它们ID(正常,突出显示)。然后使用insertRowsAtIndexes(_:)
和removeRowsAtIndexes(_:)
将该行“切换”为突出显示的行...
不是最好的解决方案,但WatchKit中唯一想到的仍然非常有限。