IOS: Невозможно получить доступ к свойствам и методам при представлении ViewController из представленногоViewViewController - PullRequest
1 голос
/ 21 марта 2012

Я пытаюсь создать вложенную структуру раскадровки, чтобы помочь разбить огромную раскадровку (кошмар слияния SVN) ... В любом случае у меня есть родительский раскадровка / viewController в этом случае 'NestedStoryTestViewContoller' и два других раскадровки / ViewControllers (StoryOne) и StoryTwo соответственно)

При нажатии кнопки в NestedStoryTestViewContoller запускается StoryOne как модальное представление. Затем я могу отклонить его и вернуться к NestedStoryTestViewController. Однако, если я хочу перейти от StoryOne напрямую к StoryTwo, у меня возникают проблемы. Я хотел бы сделать что-то вроде:

-(IBAction)goToStoryTwo{

    UIStoryboard *storyTwo = [UIStoryboard storyboardWithName:@"BoardTwo" bundle:nil];
    UIViewController *boardTwoVC = [storyTwo instantiateInitialViewController];
    boardTwoVC.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    [self.presentingViewController presentModalViewController:boardTwoVC animated:YES];   

}

но это ничего не делает.

Я могу отклонить модальное представление что-то вроде:

-(IBAction)goToMain{

     [self dismissModalViewControllerAnimated:YES];
 }

и я могу вызвать новый ModalView из метода viewDidLoad из NestedStoryTestViewController после закрытия modalview, но чтобы это работало, мне нужно было бы вызвать какой-то метод для NestedStoryTestViewCOntroller, чтобы установить свойство, сообщающее ему, какой новый modalview загружать.

Когда я пытаюсь вызвать такой метод, я получаю довольно большую ошибку с полным компилятором, которая кажется беспричинной:

[self.presentingViewController setViewToLoad:@"StoryOne"];

вызывает ошибку: проблема с автоматическим подсчетом ссылок 'Тип получателя' UIViewController 'для сообщения экземпляра не объявляет метод с селектором' setViewToLoad ''

Метод четко определен и реализован, и я понятия не имею, почему он выдает эту ошибку. Я получаю ту же ошибку при попытке установить какие-либо свойства на 'presentingViewController'. Если я добавлю в журнал заявление вроде:

NSLog(@"parent class : %@",[[self presentingViewController] class] );

регистрирует «родительский класс: NestedStoryTestViewController», как и ожидалось.

Любая помощь очень ценится, поскольку она предназначена для работы и, следовательно, очень важна и своевременна. При необходимости я могу предоставить файлы проекта.

Спасибо, Chris

Обратите внимание: мне известно об изменении имени с 'parentViewController' на 'presentingViewController', и проект только 5.0, так что это не проблема.

1 Ответ

0 голосов
/ 21 марта 2012

Причина, по которой вы получаете ошибку в следующей строке:

[self.presentingViewController setViewToLoad:@"StoryOne"];

, заключается в том, что вы вызываете метод вашего класса NestedStoryTestViewController, но компилятор считает, что это класс UIViewController.

Поскольку вы знаете, что это за класс, вам нужно "преобразовать" (или привести) его к нужному типу, чтобы компилятор знал, что он ответит на ваш метод, например так:

[(NestedStoryTestViewController *)self.presentingViewController setViewToLoad:@"StoryOne"];
...