2009-06-14 11 views
1

UITableViewControllerにはinitWithStyleメソッドがあります。このメソッドでは、テーブルビューに使用するスタイル(プレーンまたはグループ)を渡します。おそらく複数の場所で、コードのどこか、私のテーブルビューコントローラを作成し、使用するこれらの手段、私はこれを行う:iphoneでグループ化されたテーブルビューコントローラを作成する最も良い方法は何ですか?

MyViewController *myViewController = [[MyViewController alloc] initWithStyle: UITableViewStyleGrouped]; 
[self.navigationController pushViewController: myViewController animated: YES]; 
[myViewController release]; 

これらは、私には逆方向に思えます。私のUITableViewControllerを使用するクラスは、MyViewControllerが処理しなければならない懸念であるグループ化されたスタイルまたはプレーンなスタイルを使用しているかどうかを知っていても気にしてはいけません。これに対処する慣習的な方法は何ですか? initWithStyleを呼び出すためにMyViewControllerのinitメソッドをオーバーライドしますか?

答えて

0

初心者の私の答えは「ちょうどやって」、後で哲学的なデザインの問題について心配しています。普及した本を含む私が見たすべての例は、それがあまりにも間違っていないように、「パターン」を持っています。

+0

ええと、私はちょっと他の開発者からのフィードバックを探していますどのようなベストプラクティスを考えているのかを確認する – pjb3

+0

MVCパターンでモデルを所有するオブジェクトが何であるかなど、いくつかのことを行うための「最良の」方法について同様の質問をしています。私はそれを働かせようと努力し、かなり頻繁に(まだ新しい)時間を過ごす。それから私は思う - なぜ私はこれをやっているの?今のところ、私はちょうどうまくいくでしょう、そして、後で、私がもっと知っている/理解しているときにそれを見直すことができます。 – kindaran

0

別のinitメソッドを呼び出すスーパークラスで1つのinitメソッドをオーバーライドするときには注意してください。ここではわかりませんが、サブクラスでinitをオーバーライドしてsuperを呼び出すと、initWithStyleがすでにスーパークラスのinitを呼び出している場合、手をループする可能性があります。

0

私はちょうど必要ならば、initメソッドをオーバーライドし、Interface Builderでテーブルにグループ化されたスタイルを割り当て、Xcodeの通過テーブルビューコントローラを作成します。

- (id)init { 
    self = [super initWithNibName:@"MyViewControllerNibFileName" bundle:nil]; 
    if (self) { 
     // Do other customisation 
    } 
    return self; 
} 

私は明示的にいくつかのためにペン先名を設定するために必要な理由はありますが、時にはView Controllerが自動的に見つけただけです(私はまだ初心者ですから、どうしてこのようなことが起こるのかわかりません)