2012-05-08 7 views
1

Xcode 4.3/iOS 5.1/Storyboards。サブタイトルとしてUITableViewを追加できません

私は、ストーリーボード

でのUITableViewとのUIViewController

-(void) loadView { 

     UITableView *tTableView = [[UITableView alloc] initWithFrame:CGRectMake(20,60, 300, 300) 
                   style:UITableViewStyleGrouped]; 
     [tTableView setDelegate:self]; 
     [tTableView setDataSource:self]; 
     [tTableView setBackgroundView:[[UIView alloc] initWithFrame:self.tableView.bounds]]; 
     self.tableView = tTableView; 
     self.view = tTableView; // <--- THIS WORKS 
} 

そのビューを初期化するときにこれは動作しますが、テーブルビューが画面の幅全体にわたって引き伸ばされています。ログインユーザー名/パスワードの制御に使用しているので、一定のサイズにしたいと思っています。

私はそれをサブビューとして追加するように言われましたが、これは同じ「loadView」メソッドへの何らかの再帰呼び出しでアプリケーションをクラッシュさせます。

-(void) loadView { 

    UITableView *tTableView = [[UITableView alloc] initWithFrame:CGRectMake(20,60, 300, 300) 
                  style:UITableViewStyleGrouped]; 
    [tTableView setDelegate:self]; 
    [tTableView setDataSource:self]; 
    [tTableView setBackgroundView:[[UIView alloc] initWithFrame:self.tableView.bounds]]; 
    self.tableView = tTableView; 
    [self.view. addSubview: tTableView]; // <-- THIS CRASHES 

} 

なぜこのクラッシュですか?どのように私は幅を制御することができ、それは私の画面の全体の幅を占めていないサブビューにUITableViewを追加できますか?

+0

self.viewの後のドットは何ですか? ([self.view。addSubview:tTableView];) – Geoffroy

+0

はい。私は間違ってここに入力/編集するときにそれを追加する必要があります。 – JasonGenX

答えて

3

self.view = tTableViewまたはself.view = [UIView alloc] initWithFrame....に変更してから、テーブルビューを追加する必要があります。 loadViewメソッドをオーバーライドすると、self.viewを作成することになります。したがって、あなたの場合は、UIViewを作成し、self.viewに設定して、サブビューとしてサブビューを追加します。self.view

0

あなたは自分でビューを定義するという意味のloadViewメソッドを使用します。 self.viewは定義されておらず、コントローラーは自身が表示されるべきときにそのビューが定義されていないと不満を表明します。

インターフェイスをxib(またはストーリーボード)に入れ、viewDidLoadでそれらの値をバインドするか、loadViewで手作業でself.viewをインスタンス化します。

関連する問題