2016-09-15 3 views
1

테이블이있는 간단한 WatchKit 앱을 만들려고합니다. 각 행에는 레이블이 있습니다. 여기 내 TableRowController 클래스의 내 InterfaceController에서WKInterfaceTable이 행을 만들지 않습니다.

import WatchKit 

class TaskTableRowController: NSObject { 

    @IBOutlet var taskName: WKInterfaceLabel! 
} 

, 나는 나의 표에 행을 추가하고 라벨의 텍스트를 설정하려고합니다. 그러나 taskList.rowController (at : 0)는 행을 찾지 못하므로 Label이 수정되지 않습니다. 그것은 나를 위해 작동, Interface Builder Watch Simulator

+0

이 자습서를 보시려면 https://www.appcoda.com/selectable-table-watchkit/ – Dmitry

+0

@csstudent 아래 답변을 확인하십시오 ... –

+0

아래 코드를 확인 하시겠습니까? 그것은 저에게 효과적입니다. –

답변

0

바꾸기 코드를 다음과 같습니다 :

import WatchKit 
import Foundation 

class InterfaceController: WKInterfaceController { 

    @IBOutlet var taskList: WKInterfaceTable! 

    override func awake(withContext context: Any?) { 
     super.awake(withContext: context) 

     // Configure interface objects here. 
     taskList.setNumberOfRows(1, withRowType: "TaskRow") 
     if let x = taskList.rowController(at: 0) as? TaskTableRowController 
     { 
      x.taskName.setText("Hello World") 
     } 
    } 

    override func willActivate() { 
     // This method is called when watch view controller is about to be visible to user 
     super.willActivate() 
    } 

    override func didDeactivate() { 
     // This method is called when watch view controller is no longer visible 
     super.didDeactivate() 
    } 

} 

다음은 인터페이스 빌더에서 일부 화면과 출력의 내가 PL하지만 스크린 샷을 본

taskList.setNumberOfRows(10, withRowType: "TaskRow") 

    for index in 0..<taskList.numberOfRows { 
     if let controller = taskList.rowControllerAtIndex(index) as? TaskTableRowController { 
      controller.taskName.setText("Hello World") 
     } 
    } 

. 크로스 체크 포인트 아래에 있는지 확인 & :

  • WKInterfaceLabel이 (TASKNAME가)TaskTableRowControllerIBOutlet있다.

  • TaskTableRowController 식별자는 'TaskRow'에 으로 설정됩니다.

  • WKInterfaceTable(taskList)에는 IBOutlet이 있습니다.

  • 'TaskTableRowController'행에 대한 사용자 정의 클래스가 설정됩니다.

희망이 있습니다!

검색어가 있으면 알려주세요.