私はObjective-Cには比較的新しく、Javaのバックグラウンドから来ているので、ポインタの概念はわかりません。UIViewControllerのprepareForSegueのプロパティへのアクセス
私はjsonControllerDidLinkedInAuthメソッドでデリゲートを実装するクラスを持っています。 委任は、自身と(NSURL *)URLを渡して、このクラスにメッセージを送信するたびに、私はこの操作が終了するとperformSegueWithIdentifierを、呼び出しプロパティauthUrlにURLを割り当てるしようとしていたターンが実行中prepareForSegue(これについての私の理解の限り)。
私は受け付けており、これは、動作していないよう:「 - [UINavigationController setUrlAddress:キャッチされない例外により 'NSInvalidArgumentException'、理由にアプリを終了*:
のApp [13517 3278]を:]:認識されないセレクターインスタンス0x6acab00' SIGABRTでアプリケーションを終了
エラーメッセージに送られます。
どちらのメソッドも同じクラスにあります。これはUINavigationControllerであり、別のUINavigationControllerを指しています。コンパイラは、2番目の方法の[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:setUrlAddressのすぐ上のNSLogはself.authUrlを返します。私は可視性の問題のいくつかの種類でなければならないと仮定していますが、私はこれを解決する方法がわかりません。
ありがとう、これは魅力のように機能します!また、同様の方法で動作する他のViewControllerもほとんどないので、メッセージでデバッグが大幅に節約されました。 –
ようこそ。毎回キャストすることなく、興味のあるView Controllerに簡単にアクセスできるように、私の更新された回答をご覧ください。 –