1

Я пытаюсь изменить кадр VC, не работает. это мой код:set view view view viewer в UINavigationController

AZControlViewController *vc = [[AZControlViewController alloc] init]; 
vc.tableView.frame = CGRectMake(0, 195, 320, 500); 
self.vcMaster = [[[UINavigationController alloc] initWithRootViewController:vc] autorelease]; 

AZControlViewControlleris является UITableViewController.

Может ли кто-нибудь мне помочь?

Спасибо!

ответ

1

См. С точкой останова или NSLog this tableView property of vc. Он должен быть nil. Это происходит потому, что компоненты представления контроллера вида будут инициализированы только после того, как был представлен контроллер представления.

Чтобы изменить рамку таблицыView правильно, внутри AZControlViewController.m, выполните описанный выше метод и измените рамку так, как вы хотите.

-(void)viewDidLayoutSubviews 
{ 
    [super viewDidLayoutSubviews]; 
    self.tableView.frame = CGRectMake(0, 195, 320, 500); 
} 

Если вы все еще хотите установить этот кадр из внешнего класса, создать свойство для хранения кадра, который вы хотите, а затем назначить этот кадр в кадр Tableview в.

В AZControlViewController.h:

@property (nonatomic, assign) CGRect tableViewFrame; 

В AZControlViewController.m:

-(void)viewDidLayoutSubviews 
{ 
    [super viewDidLayoutSubviews]; 
    self.tableView.frame = self.tableViewFrame; 
} 

И где-то еще:

AZControlViewController *vc = [[AZControlViewController alloc] init]; 
vc.tableViewFrame = CGRectMake(0, 195, 320, 500); 
+1

Спасибо большое, я боролся вопрос в течение нескольких часов, и это было проблема. –

0

Для этого не подкласс UITAbleViewController. Вы намного лучше, имея UIContainterView, расположенный по адресу (0, 195, 320, 500) и обычный UITableViewController (или AZControlViewController, соответственно, части AZControlViewController, которые контролируют вид талбе). Рамка его ракурса будет (0,0,320,500).

0

Хорошо. jmgarben .. вы должны определить кадр в viewWillAppear или viewDidLoad следующего контроллера представления. Он будет работать.

Если у вас все еще есть сомнения .. вы можете спросить.