2

viewDidLoadが持っている:

[self.tableView registerNib:[UINib nibWithNibName:@"TypeOneCell" bundle:[NSBundle mainBundle]]
               forCellReuseIdentifier:@"CustomCellOne"];

cellForRowAtIndexPath:

TypeOneCell *cell;

cell = [tableView dequeueReusableCellWithIdentifier:@"CustomCellOne"];
return cell;

UITableViewControllerプッシュ/ポップするすべてのテーブルに同じクラスを使用したい。したがって、おそらく列挙型とその変数を作成します。そのため、View Controller のタイプを確認し、それに応じて調整を行います。私の質問は、上記と同じ方法でこれを行う方法です。( viewDidLoad) の問題ですか:

switch (self.theControllerType) {
         case CPTypeOne:
             [self.tableView registerNib:[UINib nibWithNibName:@"TypeOneCell" bundle:[NSBundle mainBundle]]
                   forCellReuseIdentifier:@"CustomCellOne"];
             break;
         case CPTypeTwo:
             [self.tableView registerNib:[UINib nibWithNibName:@"TypeTwoCell" bundle:[NSBundle mainBundle]]
                     forCellReuseIdentifier:@"CustomCellTwo"];
             break;
         default:
             break;
}

そして ( cellForRowAtIndexPath):

switch (self.theControllerType) {
    case CPTypeOne {
        TypeOneCell *cell;
        cell = [tableView dequeueReusableCellWithIdentifier:@"CustomCellOne"];
        return cell;
        break;
    case CPTypeTwo {
        TypeOneCell *cell;
        cell = [tableView dequeueReusableCellWithIdentifier:@"CustomCellTwo"];
        return cell;
        break;
    default:
        break;
}

それとも、これは間違ったアプローチですか?これを行うより効率的な方法はありますか?

4

1 に答える 1

2

メソッドのスイッチ条件を削除するviewDidLoadと、すべてが正常に機能します。

于 2012-11-09T23:34:50.330 に答える