Iphone: проблема с перемещением вперед и назад между двумя UIViewController - PullRequest
0 голосов
/ 07 апреля 2010

Позвольте мне сначала описать контекст проблемы. У меня 2 UIViewController звонок AdminViewController и ButtonReorderViewController. AdminViewController содержит 1 кнопку. ButtonReorderViewController содержит 1 кнопку и 1 изображение. Кнопка в AdminViewController привязана к событию goToReorderButton. Содержание goToReorderButton ниже:

ButtonReorderViewController *buttonReorder = [[ButtonReorderViewController alloc] initWithNibName:@"ButtonReorderViewController" bundle:[NSBundle mainBundle]];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:buttonReorder];  //Add a Navigation Controller to the root view
[navController setNavigationBarHidden:TRUE];
buttonReorder = (ButtonReorderViewController *) navController;
[[buttonReorder view] setFrame:CGRectMake(0, -20, 320, 470)];
[self.view addSubview:buttonReorder.view];

Я использую UINavigationController, чтобы позволить мне проводить пальцем влево и вправо. Так что я нахожусь в AdminViewController, и я нажимаю на goToReorderButton, он загружается ButtonReorderViewController. Я могу провести пальцем влево и вправо (потрясающе !!!), поэтому я нажимаю кнопку в ButtonReorderViewController вызов goToAdmin, просто чтобы вернуться к AdminViewController

-(void) goToAdmin{
     [self.view removeFromSuperview];
}

Однако, как только я возвращаюсь к AdminViewController, я не могу ничего щелкнуть. Программа не выдает ошибку, просто я вообще не могу нажать кнопку. если я уберу строку buttonReorder = (ButtonReorderViewController *) navController; внутри goToReorderButton, то все будет работать нормально. Есть идеи как это исправить?

Ответы [ 3 ]

1 голос
/ 07 апреля 2010

Я не уверен, что следую за вами, но я думаю, что вы должны использовать методы UINavigationController для навигации между контроллерами представления:

Контроллер вида администратора должен быть корневым контроллером контроллера навигации, а затем вы можете нажать и вытащить контроллер вида переупорядочения.

В приложении делегат (applicationDidFinishLaunching: метод):

// TODO: Instantiate the adminController

UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:adminController];
[window addSubview:navController.view];

В AdminViewController (подмена кнопки внутри метода обработчика событий):

// TODO: Instantiate the buttonReorder

[self.navigationController pushViewController:buttonReorder animated:YES];

В ButtonReorderViewController (подмена кнопки возврата внутри метода обработчика события):

[self.navigationController popViewControllerAnimated:YES];

Конечно, вы должны создавать экземпляры контроллеров представления перед их использованием ...


Cheers,
Майкл.

0 голосов
/ 07 апреля 2010

Звучит так, как будто приложение рухнуло на той строке, которую вы указали. Выводит ли консоль отладки что-либо при сбое?

Похоже, что линия buttonReorder = (ButtonReorderViewController *) navController; проваливается на актерский состав. Вы уверены, что ButtonReorderViewController расширяется UINavigationController? Если нет, то вы не можете разыграть это так.

0 голосов
/ 07 апреля 2010

Я не уверен, но я думаю, что вы можете использовать метод PusViewController NavigationController, чтобы сделать вашу работу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...