использование viewController для открытия другого экземпляра того же viewController - PullRequest
0 голосов
/ 07 октября 2010

У меня есть MasterViewController.hmxib (UIViewController), который открывает TestDummy.hmxib (UIViewController) следующим образом:

TestDummy *controller = [[TestDummy alloc] initWithNibName:@"TestDummy" bundle:nil];
[scrollView addSubview:controller.view];

У меня есть две кнопки в TestDummy: (Открыть), (Закрыть)и одна метка: (windowDepth).

Я пытаюсь создать второй экземпляр TestDummy, который открывается первым TestDummy.Затем разрешите нескольким TestDummy (UIViewController) открываться на глубину N и разрешите кнопке закрытия вернуть их на нулевую глубину.Вот что у меня есть для моей кнопки Открыть.

-(IBAction) btnOpen_Clicked{
TestDummy *newController = [[TestDummy alloc] initWithNibName:@"TestDummy" bundle:nil];
newController.isNotRoot = YES;
newController.windowDepth = self.windowDepth + 1;
//do stuff...
childDummy = newController;

// start the animated transition
[UIView beginAnimations:@"page transition" context:nil];
[UIView setAnimationDuration:1.0];
[UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.view cache:YES];

//insert your new subview
[self.view addSubview:newController.view];

// commit the transition animation
[UIView commitAnimations];
[newController release];

}

Когда я делаю это, я получаю сообщение об ошибке в консоли отладки.

2010-10-07 00:59:12.549 OrionClient[5821:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFType btnOpen_Clicked]: unrecognized selector sent to instance 0x6a339a0'

Должно бытьпроблема управления памятью, но я не могу ее решить.

Заранее спасибо.

Ответы [ 3 ]

0 голосов
/ 07 октября 2010

Это означает, что приложение не может найти ваш метод btnOpen_Clicked.

Сначала переименуйте ваш метод с помощью:

-(IBAction) btnOpen_Clicked:(id)sender

Затем убедитесь, что эта спецификация метода находится в .hfile И в InterfaceBuilder с вашим TestDummy.xib также убедитесь, что связь между кнопкой и этим методом правильно выполнена, например, с помощью события TouchUpInside.

0 голосов
/ 07 октября 2010

решил, что убрал последнюю строку [релиз newController]; нужно выяснить, где на самом деле это правильно вызвать.

0 голосов
/ 07 октября 2010

«NSInvalidArgumentException», причина: '- [__NSCFType btnOpen_Clicked]: нераспознанный селектор отправлен на экземпляр 0x6a339a0'

Это означает, что вы пытаетесь вызвать несуществующий метод в этом экземпляре. Как вы определили селектор btnOpen_Clicked? Я предполагаю, что это должно выглядеть примерно так, но на самом деле нужно посмотреть, как вы определили селектор.

-(IBAction) btnOpen_Clicked:(id)sender
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...