2012-04-26 13 views
3

私はUINavigationBarと表示していinitWithFrameからサブビューを追加します。 <strong>AppDelegate</strong>:UINavigationBarサイズ

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
// Override point for customization after application launch. 

_homeScreen = [[PrepareScreen alloc] init]; 
self.mainViewController = [[MyViewController alloc] initWithScreenDef:[self.homeScreen projectHomeScreen] AndBounds:self.window.bounds]; 

self.navigationController = [[UINavigationController alloc] initWithRootViewController:self.mainViewController]; 
self.window.rootViewController = self.navigationController; 
[self.window makeKeyAndVisible]; 
return YES; 

をし、私はクラス

MyViewController : UIView <UITableViewDataSource,UITableViewDelegate> 

と私が持っている私のの.hファイル内にあります。

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 

self.myTableView = [[UITableView alloc] initWithFrame:self.view.bounds]; 
[self.view addSubview:self.myTableView]; 
} 

その後、私は彼が間違っているスクリーンのight。私のmyTableViewにはsize.height-49.0が必要です。

答えて

2

...それがお役に立てば幸いですと。だから一般的には、initビューはviewDidLoadですが、その形状はviewWillAppear:に設定されています。

+0

Excelentソリューション。ありがとう! – Kuba

+1

1つの追加だけ、viewWillAppear:でテーブルビューを作成することができます。一般的に、viewWillAppearを軽量操作(主にジオメトリ調整)に使用します。 – graver

+0

OK、モデルクラスのデータを入れたいときは、viewDidLoadでこれを行う方が良いです。セルのサイズを変更しようとしたり、背景色を変更しようとすると(たとえば)、私はviewWillAppearを使うべきでしょうか? – Kuba

0

これはどうですか?

CGRect r = initWithFrame:self.view.bounds; 
r.size.height -= 49.0; 
self.myTableView = [[UITableView alloc] initWithFrame:r]; 

は、ビューのジオメトリがすでに設定されているとself.view.boundsが正しいだろう、この方法のようにself.myTableView.frameを設定viewWillAppear:方法で、その後viewDidLoad方法でCGRectZeroでのtableView INIT

+0

はい、これは明らかな解決策ですが、私はもっと普遍的なものを願っています。たぶん実際の空き容量を取得しています。 – Kuba

関連する問題