2010-04-11 2 views
1

Как я могу получить UIView для перехода через addSubview, как это делает текущийModalViewController? Доступные анимации, похоже, не делают этого.addSubview как modal

Я бы использовал модальный, но у меня есть панель навигации наверху и не хочу ее отключать. Кроме того, модальные накладки на панели навигации. Если есть способ сделать так, чтобы модальность не отключила навигационную панель, я могу пойти с этим подходом. Но поскольку это модально, я не думаю, что это возможно.

ответ

0

Если вы используете presentModalViewController с любым UIViewController, в качестве аргумента у вас будет @property(nonatomic, readonly, retain) UINavigationItem *navigationItem, доступный там, и вы можете скопировать или создать навигационную панель с ним.

+0

Можете ли вы дать пример псевдо, как это может быть сделано? – user230949

+0

Я могу создать новый UINavigationController и инициализировать его родительским UIViewController, но тогда я не могу предоставить родительскую навигационную панель модальному, поскольку он только для чтения. Даже если я попробую что-то вроде этого newNavigationController.navigationItem.title = @ "test", оно игнорируется. Модальная навигационная панель пуста. – user230949

+0

Ну, я скорее сделаю это в '- (void) viewDidLoad' методе созданного' UIViewController' (и на самом деле я сделал это один раз :-) –

3

Нажатие кнопки modal view с тем же навигационным состоянием похоже на то, что он сломает метафорию стека, смоделированную контроллером навигации, что является странным, но я предполагаю, что вы это уже поняли.

Если вы хотите просто добавить подвид, который оживляет из нижней части экрана, вы можете сделать это следующим образом:

CGRect onScreenFrame = viewToAdd.frame; 
CGRect offScreenFrame = onScreenFrame; 
offScreenFrame.origin.y = self.view.bounds.size.height; 

viewToAdd.frame = offScreenFrame; 
[UIView beginAnimations:@"FakeModalTransition" context:nil]; 
[UIView setAnimationDuration:0.5f]; 
[self.view addSubview:viewToAdd]; 
viewToAdd.frame = onScreenFrame; 
[UIView commitAnimations];