2012-04-26 2 views
3

У меня есть вид с UINavigationBar: AppDelegate:Добавить subview через initWithFrame. 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]; 
} 

После этого у меня есть неправильный он во весь экран. Я хочу, чтобы мой myTableView имел размер.height-49.0

ответ

2

Init в Tableview с CGRectZero в viewDidLoad способе, а затем в методе viewWillAppear: установить self.myTableView.frame как в этом методе геометрия вида не уже установлена ​​и self.view.bounds будет правильным. Итак, в общем: init views в viewDidLoad, но задайте их геометрию в viewWillAppear:.

+0

Отличное решение. Благодаря! – Kuba

+1

Только одно дополнение, вы можете создать свой вид таблицы в viewWillAppear :, пока вы не выполняете тяжелую операцию. Обычно используйте viewWillAppear для облегчения операций - в основном, при настройке геометрии. – graver

+0

ОК, поэтому, когда я хочу поместить данные из моего класса моделей, это лучше сделать в viewDidLoad, и когда я пытаюсь изменить размер ячеек или менять цвет фона (например), я должен использовать viewWillAppear, не так ли? – Kuba

0

Как насчет этого?

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

Надеется, что это помогает ...

+0

Да, это очевидное решение, но я надеюсь на нечто более универсальное. Возможно, получить фактический размер свободного места. – Kuba

Смежные вопросы