Изменение viewController при нажатии кнопки
Я новичок в программировании iPhone. то, что я пытаюсь, это у меня есть один экран с кнопкой. И я хочу изменить контроллер вида не только вид, когда я нажимаю эту кнопку (Я знаю, как добавить подвиды), потому что из этого 2-го контроллера вида я должен перейти к третьему виду, что невозможно, если я добавлю подвиды в первую очередь. Может кто-нибудь помочь мне с этим? Возможно ли это? и если да, то как? Все виды и контроллер вида создаются программно. Я не использую IB.
EDIT: вот соответствующий код, который срабатывает при нажатии кнопки
-(id)showCurrentLoc:(id)sender {
locationController = [currentLocController alloc];
[entry removeFromSuperview];
[newLoc removeFromSuperview];
[currentLoc removeFromSuperview];
[self.view setBackgroundColor:[UIColor clearColor]]; //[self.view addSubview: [locationController view]];
[self.navigationController pushViewController:locationController animated:YES]; [locationController release];
return 0;
} //Location Controller is the tableViewController
Спасибо Vik
5 ответов:
Обычно вы используете навигационный контроллер для такого рода вещей, чтобы пользователь мог легко вернуться к предыдущему виду. Ваш контроллер вида будет делать что-то вроде этого:
[self.navigationController pushViewController:someNewViewController animated:YES];
Если вы хотите управлять контроллерами вида самостоятельно, вы всегда можете просто изменить свойство окна
rootViewController
. Пожалуйста, прочитайтеруководство по программированию контроллера вида для получения полной картины.
Вы можете сделать что-то вроде этого
YourViewController *objYourViewController = [[YourViewController alloc] initWithNibName:@"YourViewController" bundle:nil]; [self.navigationController pushViewController:objYourViewController animated:YES]; [YourViewController release];
UINavigationController - это то, что вам нужно. Он управляет стеком
UIViewController
s, и если вы хотите добавить новый UIViewController, просто вставьте его в этот стек навигации. Это автоматизирует поведение кнопки Назад для вас, и вы можете вытащить текущий UIViewController из стека, когда вы закончите с ним.
Вы можете работать с UINavigationController. Добавление вашего первого UIViewController, как это в методе init:
[self setViewControllers:[NSArray arrayWithObject:viewController]];
А затем, когда кнопка нажата или выбор сделан, ваш толчок второй несколько контроллер с (в первом viewController):
[self.navigationController pushViewController:controller animated:YES];
Таким образом, вы также получите автоматическую кнопку (Назад). В основном вы создаете стек UIViewControllers, который можно нажимать и нажимать, как с обычным стеком.
Надеюсь, это поможет. Загляните в следующий: Ссылка На Класс UINavigationController
- (void) loadViewAtIndex:(NSInteger)index { [self unloadViewAtIndex:activeViewIndex]; switch (index) { case 1: { if (viewController1 == nil) { viewController1 = [[ViewController1 alloc] initWithNibName:@"ViewController1" bundle:nil]; } viewController1.view.frame = CGRectMake(0.0, 0.0, viewController1.view.frame.size.width, viewController1.view.frame.size.height); [window addSubview:viewController1.view]; } break; case 2: { if (viewController2 == nil) { viewController2 = [[ViewController2 alloc] initWithNibName:@"ViewController2" bundle:nil]; } viewController2.view.frame = CGRectMake(0.0, 0.0, viewController2.view.frame.size.width, viewController2.view.frame.size.height); [window addSubview:viewController2.view]; } break; default: break; } activeViewIndex = index; } - (void) unloadViewAtIndex:(NSInteger)index { switch (index) { case 1: { if (viewController1 != nil) { [viewController1.view removeFromSuperview]; [viewController1 release]; viewController1 = nil; } } break; case 2: { if (viewController2 != nil) { [viewController2.view removeFromSuperview]; [viewController2 release]; viewController2 = nil; } } break; default: break; } }