1

iOS チュートリアルを読んでいます。.h ファイルと .m ファイルがあります。.m ファイルに、次のようないくつかのメソッドを記述して定義します-

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return 1;
}

また、

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"ChecklistItem"];
    return cell;
}

これらのメソッドはどこでも呼び出していません。それでも、実行時に出力が変化します。どのように?これらはメソッドをオーバーライドしていますか?

4

4 に答える 4

4

次の設定を行うと、これらの関数が呼び出されます。

yourTableView.delegate = self;
yourTableView.dataSource = self;

またはファイル内のに接続yourTableViewします。それ以外の場合は、ショーのデフォルトです。File's owner.xibUIViewUITableView

于 2012-06-26T09:45:14.300 に答える
4

私があなたの質問を適切に受け取った場合、「あなたはいくつかのメソッドを呼び出しませんでしたが、それらは実行されます」というのは本当です。Xcodeいくつかのメソッドを呼び出さず、それらは自動的に実行されます。オブジェクトを 1 つ配置.xibすると、プロジェクトで実行される関連メソッドがいくつかあります。それらに乗りたい場合は、単にそれらを削除できます。

于 2012-06-26T09:54:16.683 に答える
2

これらはテーブルビューデリゲートメソッドです。設定すると自動的に呼び出されます。

TableViewVar.delegate = self;
TableViewVar.dataSource = self;
于 2012-06-26T09:45:38.483 に答える
2

いいえ、それらはメソッドをオーバーライドしていません。ブレークポイントを置いてデバッグすると、誰が上記のメソッドを呼び出しているかがわかります。

に戻ると、常に が1呼び出されることに注意してください。celForRowAtIndexPath要素が 1 つあると言ったからです。

ちなみに、コントローラーを の に設定したため、メソッドは「自動的に」呼び出されていdatasourceますUITableView

于 2012-06-26T09:42:45.497 に答える