すべてのプロトコルには、それらに準拠するために実装する必要がある一連のメソッドが付属しています。クラスに準拠するようにそれらのメソッドを記述する必要があります。これは、プロトコルの完全な実装ではありません、
class ViewController : UIViewController, UITableViewDataSource, UITableViewDelegate {
}
をしかし:あなたはのtableViewを持ってすることを決定した場合
は例えば、のUIViewControllerに、あなたがそうのように、UITableViewDataSource
、UITableViewDelegate
プロトコルを追加する必要があります。これは単なる宣言です。
実際にView Controllerをプロトコルに準拠させるには、cellForRowAtIndexPath
とnumberOfRowsInSection
という2つのメソッドを実装する必要があります。これはプロトコルの要件です。
ので、完全な実装は次のようになります。そのため、あなたはドキュメントを調べて、あなたのプロトコルが実装するクラスを必要としないものをする方法を見つける必要があります
class ViewController : UIViewController, UITableViewDataSource, UITableViewDelegate {
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("cellID", forIndexPath: indexPath) as! ExperienceCell
return cell
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
return 0
}
}
。 これはこの問題を解決するはずです。そして、私はそれがXcodeの8またはSWIFT 3
EDITここで何かをするとは思わない:これはapple documentation says
Most methods of this protocol are optional. You implement the methods you need to respond to the data transfer operations that your apps support. However, apps should implement support for the session:activationDidCompleteWithState:error: method to support asynchronous activation, and the delegate in your iPhone app should implement the sessionDidBecomeInactive: and sessionDidDeactivate: methods to support multiple Apple Watches.
あなたはプロジェクトをビルドしましたか? –
@AkshanshThakurはい、複数回 – Devhess
ビルド出力の完全なエラーを読むと、プロトコルに準拠していないことがわかります –