У меня есть UIView, который содержит подвид под названием menuView, управляемый MenuViewController.
Я написал этот код:
- (void) viewDidLoad
{
[self.menuView setFrame:CGRectOffset(self.menuView.frame, 0.0, self.menuView.frame.size.height)];
[super viewDidLoad];
}
- (void) viewDidAppear:(BOOL)animated
{
[UIView beginAnimations:@"SomeAnimation" context:nil];
[UIView setAnimationDuration:2.0];
[UIView setAnimationDelegate:self];
[UIView setAnimationTransition:UIViewAnimationTransitionNone forView:self.menuView cache:YES];
[self.menuView setFrame:CGRectOffset(self.menuView.frame, 0.0, -self.menuView.frame.size.height)];
[UIView commitAnimations];
[super viewDidAppear:animated]; // tried at begining too
}
Но при загрузке анимации не видно ... Еще пробовал с viewWillAppear без изменений.
Он вызывается вне MenuViewController с помощью:
- (IBAction) showMenu
{
MenuViewController* menuController = [[MenuViewController alloc] initWithNibName:@"Menu" bundle:nil];];
[self.view addSubview:menuController.view];
// [menuController release]; for try
}
В чем проблема ?
P.S. : То, что я хочу сделать, это когда представление отображается, некоторая часть этого представления (menuView) перемещается. Это представление (частично прозрачное) предназначено для покрытия супервизора, принадлежащего другому ViewController.
3 ответа
Вы вызываете метод viewDidAppear из своего контроллера представления? Некоторые контроллеры, такие как UINavigationController, позаботятся об этом, но если вы используете настраиваемый контроллер, вам нужно будет его вызвать. Обычно вы вызываете viewWillAppear, а затем добавляете представление, вызывая viewDidAppear.
Итак, ваш кодовый блок будет:
- (IBAction) showMenu
{
MenuViewController* menuController = [[MenuViewController alloc] initWithNibName:@"Menu" bundle:nil];];
[menuController viewWillAppear:YES];
[self.view addSubview:menuController.view];
[menuController viewDidlAppear:YES];
[menuController release];
}
Можете ли вы подтвердить, что self.menuView действительно правильно инициализирован и не равен нулю?
Может быть, вам сначала следует вызвать суперинициализацию вашего метода?
[super viewDidAppear:animated]
Похожие вопросы
Новые вопросы
iphone
НЕ ИСПОЛЬЗУЙТЕ этот тег, если вы не обращаетесь конкретно к iPhone и / или iPod touch от Apple. Для вопросов, не зависящих от оборудования, используйте тег [ios]. Больше тегов, которые нужно рассмотреть, это [xcode] (но только если вопрос касается самой IDE), [swift], [target-c] или [cocoa-touch] (но не [cocoa]). Пожалуйста, воздержитесь от вопросов, касающихся iTunes App Store или iTunes Connect. Если вы используете C #, пометьте [mono].