1

私は IOS と XCode と Swift の完全な初心者であり、Windows7 で実行されている Vmware に組み込まれた Yosemite で Xcode を初めて試しています (ゲストは MAC ヨセミテ、ホストは vmware ワークステーション 9 を実行している Windows です)。

次のように宣言された IOS プロジェクトに ViewController クラスがあります。

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {...}

ここで、プロトコル UIViewController および UITableViewDelegate の必要なメソッドを実装したいと思います。

チュートリアルで

http://jamesonquave.com/blog/developing-ios-apps-using-swift-tutorial/

どのメソッドを実装する必要があるかを示すには、プロトコルで Command + Click を使用する必要があると書かれています。

私の vmware でこれを「コマンド + プロトコルをクリック」する方法がわかりません。

ヒントはありますか?

Alt キーを押しながらプロトコルをクリックすると、ヘルプが表示されます。WindowsButton + プロトコルをクリックすると、プロトコルのソースコードを含む新しいウィンドウが開きます。次に、実装する必要があるメソッドを表示する方法。

4

2 に答える 2

1

あなたを助けるために、UIViewControllerはあなたがサブクラス化しているクラスです。これはプロトコルではないため、実装に必要なメソッドはありません。ただし、継承したメソッドはオーバーライドできます。これは、最初にファイルを作成したときに表示されるものです。

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
}

これは、UIViewController から継承したメソッドをオーバーライドします。呼び出し以外に何もしていない場合はsuper.viewDidLoad()、コードから関数全体を削除できます。

現在、UITableViewDataSource および UITableViewDelegate または両方のプロトコルであるため、実装に必要なメソッドがある場合とない場合があります。

Alt キーを押しながらクリックしたときに説明する内容は、UITableViewDataSource を右クリックして定義へのジャンプを選択した場合と同じです。これは、実際の Mac でコマンド クリックすると得られるものです。チュートリアルが言っていることは、必要なメソッドが一番上にあるということです。これは、ドキュメントを見ると常にそうであるとは限りません (メソッドは目的ごとに整理されているため)。UITableViewDataSource の場合、次のように表示されます。

protocol UITableViewDataSource : NSObjectProtocol {

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int

// Row display. Implementers should *always* try to reuse cells by setting each cell's reuseIdentifier and querying for available reusable cells with dequeueReusableCellWithIdentifier:
// Cell gets various attributes set automatically based on table (separators) and data source (accessory views, editing controls)

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell

optional func numberOfSectionsInTableView(tableView: UITableView) -> Int // Default is 1 if not implemented

optional func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? // fixed font style. use custom view (UILabel) if you want something different
optional func tableView(tableView: UITableView, titleForFooterInSection section: Int) -> String?

最初の 2 つのメソッドfunc tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Intfunc tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCellの前にオプションがないことに気付くでしょう。これは、これらがこのプロトコルに必要なメソッドであることを意味します。以下のオプションはオプションです。

UITableViewDelegate の場合、オプションではないメソッドがないことがわかります。したがって、実装する必要はありません。

于 2015-02-09T17:44:25.490 に答える