Xcode 4.3 / iOS5.1/ストーリーボード。
ストーリーボードに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
}
これは機能しますが、TableViewは画面の幅全体に拡大されます。ログインユーザー名/パスワードコントロールに使用しているので、一定のサイズにしたいのですが。
サブビューとして追加するように言われましたが、これにより、同じ「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をサブビューに追加して、その幅を制御し、画面の幅全体を占有させないようにするにはどうすればよいですか?