2015-06-19 3 views
1

Мне просто нужно проверить, какая строка была выбрана для передачи данных между WKInterfaceController. Вот мой код, но NSLog ничего не показывает:WKInterfaceTable определяет, какая строка выбрана

- (void)loadTableData { 

    NSArray* items = [NSArray arrayWithObjects:@"cell 1 ",@"cell2 ", @"cell 3",@"cell4",nil]; 

    // Configure the table object (self.todoItems) and get the row controllers. 
    [self.myTable setNumberOfRows:items.count withRowType:@"DinoNameRow"]; 
    NSInteger rowCount = self.myTable.numberOfRows; 

    // Iterate over the rows and set the label for each one. 
    for (NSInteger i = 0; i < rowCount; i++) { 
     // Get the to-do item data. 
     NSString* itemText = items[i]; 

     // Assign the text to the row's label. 
     DinoNameRow* row = [self.myTable rowControllerAtIndex:i]; 
     [row.dinoName setText:itemText]; 
    } 
} 
- (void)table:(WKInterfaceTable *)table didSelectRowAtIndex:(NSInteger)rowIndex { 

    switch (rowIndex) { 
     case 0: 
      NSLog(@"ROW 1"); 
      break; 

     default: 
      break; 
    } 
} 
+0

Подключен ли ваш стол через IBOutlet к вашему элементу таблицы в раскадровке? – hgwhittle

+0

@hgwhittle Да. –

+0

Вы установили rowType в Storyboard в «DinoNameRow»? Кроме того, вы установили класс вашего контроллера имен в Storyboard на «DinoNameRow»? – hgwhittle

ответ

1

Убедитесь, что ...

  1. Вашего WKInterfaceTable подключен через IBOutlet к вашей раскадровке элементу.
  2. Ваш идентификатор ROWTYPE для контроллера строки задается в раскадровке: enter image description here
  3. Ваш идентификатор класса для контроллера строки задается в раскадровке: enter image description here
  4. Вы переопределен правильный WKInterfaceController метод:

    override func table(table: WKInterfaceTable, didSelectRowAtIndex rowIndex: Int) { 
    
    } 
    
+0

В шаге 3 модуляция пуста для меня! как мне его заполнить? даже мой основной IntefaceContoller пуст! ! ! другие части все в порядке! –

+0

Те, которые должны быть установлены с именем модуля расширения устройства просмотра. В панели навигации вашего файла слева вы ищете папку, содержащую все ваши классы Watch. Должно быть что-то вроде ' Watch Extension'. Установите это в поле модуля с символами подчеркивания для пробелов. – hgwhittle

+0

AHA !!! Я нашел решение, из-за которого я добавляю 'PUSH SEGUE 'к другому контроллеру представления! это была проблема –

-1

Убедитесь, что делегат WKInterfaceTable установлен правильно

+0

'WKInterfaceTable' не имеет свойства делегата. – hgwhittle

0

код, как показано ниже, что я использую в моем проекте работает хорошо.

override func table(table: WKInterfaceTable, didSelectRowAtIndex rowIndex: Int) { 
     let string = data[rowIndex] 
     self.delegate?.didSeletStyle(style, string: string, index: rowIndex) 
     popController() 
    } 

    private func reloadTable() { 
     for i in 0 ..< table.numberOfRows { 
      let row = table.rowControllerAtIndex(i) as! tableRow 
      row.label.setText(data[i]) 
     } 
    } 

private func getData(style: Style) { 
    if style == .Friend { 
     data = ["a","b","c","d"] 
    } 

    table.setNumberOfRows(data.count, withRowType: "tableRow") 
    reloadTable() 
} 
+0

Спасибо, я пытаюсь преобразовать его в Obj c, а затем посмотреть, что произойдет –

Смежные вопросы