我對Objective-C比較陌生,而且我來自Java背景,因此我發現指針的概念並沒有很好地解釋編譯錯誤相當艱鉅。在UIViewController的prepareForSegue中訪問屬性
我有一個類實現與jsonControllerDidLinkedInAuth方法的委託。每當委託將消息發送到這個類中,通過自身和(NSURL *)網址,我想給網址分配給屬性authUrl,當這個操作完成後調用performSegueWithIdentifier,進而執行prepareForSegue(就我的理解而言)。
這似乎並沒有工作,因爲我收到一個:
應用[3278:13517] *終止應用程序由於未捕獲的異常 'NSInvalidArgumentException',原因是:「 - [UINavigationController的setUrlAddress :]:無法識別的選擇發送到實例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:剛好在setUrlAddress之上的NSLog確實返回self.authUrl。我假設它必定是某種可見性問題,但我不知道如何解決這個問題。
謝謝,這個作品就像一個魅力!此外,您的消息爲我節省了很多調試時間,因爲很少有其他ViewController會以類似的方式運行。 –
不客氣。查看我更新的答案,以便您輕鬆訪問您感興趣的視圖控制器,而無需每次都投入。 –