1

私の会社での予期しない出来事により、Objective Cの経験はありませんが、短時間でiphoneアプリを作成してリリースするようにドラフトされました。構文のいくつかに従うのに問題があります。

私は次のメソッド定義を持っています:

- (UITableViewCell *)tableView:(UITableView *)tableView
     cellForRowAtIndexPath:(NSIndexPath *)indexPath {

}

これは、次のインターフェイスで定義されたクラスに存在します。

@interface TableExampleViewController : UIViewController 
    <UITableViewDelegate, UITableViewDataSource>
{
    NSArray *lightbulbs;
}

メソッド宣言とはどういう意味ですか?UITableViewCell *)それが戻り型、cellForRowAtIndexPathメソッド名、(NSIndexPath *) indedPathパラメーターであることは理解していますが、その意味はtableView:(UITableView *)tableView何ですか?クラスが実装するプロトコルと関係があると思います。C#の同等の構文は何でしょうか?

4

3 に答える 3

4

Objective-Cでは、メソッド名にはすべての引数名が含まれているため、メソッドの名前は次のようになります。

tableView:cellForRowAtIndexPath:

これには両方のコロンが含まれます:

それはプロトコルの実装とは何の関係もありません-それは単にObjective-Cでメソッドに名前を付ける方法です。したがって、架空のC#に相当するものは単純になります

UITableViewCell tableViewcellForRowAtIndexPath(UITableView tableView, NSIndexPath indexPath)
于 2012-05-10T14:43:33.817 に答える
2
tableView: cellForRowAtIndexPath:

はメソッド名であり、c#の命名とは異なります。C#では、メソッド定義は次のようになります。

UITableViewCell GetCellFromTableViewAtIndexPaht(UITableView tableView, NSIndexPath indexPath)
于 2012-05-10T14:47:23.737 に答える
1

これがデリゲートデザインパターンです。基本的に、UIViewControllerクラスのUITableViewインスタンスは、指定されたインデックスにUITableViewCellを提供するようにViewControllerに要求します。たとえば、View Controllerに曲の配列があり、それらをテーブルビューに表示したいとします。次に、新しいUITableViewCellを作成し、そのtextLabel.textを指定されたインデックス(indexPath.row)の曲のタイトルに設定して、セルを返します。パフォーマンス上の理由からUITableViewCellsを再利用することになっているため、ドキュメントのテーブルビュープログラミングガイド、特にテーブルビューへの入力を読むことをお勧めします。

于 2012-05-10T14:44:04.183 に答える