Доступ к свойству в prepareForSegue UIViewController

Я относительно новичок в Objective -C, и я пришел из Java, поэтому я нахожу понятие указателей, а не -, которое -хорошо объяснило ошибки компиляции, довольно обескураживающим.

У меня есть класс, который реализует делегат с помощью метода jsonControllerDidLinkedInAuth. Всякий раз, когда делегатор отправляет сообщение этому классу, передавая себя и (URL-адрес NSURL *), я пытаюсь назначить URL-адрес свойству authUrl, когда эта операция завершится, вызовите PerformSegueWithIdentifier, который, в свою очередь, выполняет prepareForSegue (, насколько я это понимаю ).

Это не работает, так как я получаю:

App[3278:13517] * Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UINavigationController setUrlAddress:]: unrecognized selector sent to instance 0x6acab00'

сообщение об ошибке, которое завершает работу приложения с SIGABRT .

Оба метода находятся в одном классе, который является UINavigationController и указывает на другой UINavigationController. Компилятор указывает мне на [vc setUrlAddress:self.authUrl];второго метода.

- (void)jsonControllerDidLinkedInAuth:(JsonController *)controller :(NSURL *)url {
    authUrl = url;
    if (authUrl != nil) {
        [self performSegueWithIdentifier:@"LinkedInAuth" sender:self];
    } else {
        NSLog(@"Auth URL is null");
    }
}


- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:@"LinkedInAuth"]) {
        // Get destination view
        LinkedInViewController *vc = [segue destinationViewController];
        NSLog(@"The auth url from prepareForSegue in SignupViewControlle: %@", self.authUrl);
        [vc setUrlAddress:self.authUrl];
    }
}

Проблема в том, что по какой-то причине я не могу получить доступ к свойству authUrl класса, которым я сейчас являюсь. Я пробовал с authUrl, [self authUrl] и self.authUrl, но ничего из этого не работает. Свойства синтезируются, но я также заметил небольшую подсказку :«UINavigationController setUrlAddress», не должен ли это быть LinkedInViewController, как определено в методе выше? Я попытался выполнить приведение (LinkedInViewController )[segue destinationViewController], но затем я получаю сообщение, уведомляющее меня о том, что вы не можете выполнить приведение к указателю.

Любая помощь будет высоко ценится. Спасибо за чтение.

Редактировать 1 :NSLog чуть выше setUrlAddress действительно возвращает self.authUrl. Я предполагаю, что это какая-то проблема с видимостью, но я не уверен, как это решить.

10
задан Daniel Z. 29 June 2012 в 19:14
поделиться