2013-12-22 251 views
0

我試圖從UITextView獲取HTML代碼,並讓用戶在下一個Segue的UIWebView中實時查看它。這是我到目前爲止。通過Segue傳遞信息

  • DetailViewController - 視圖與UITextView的:
    • 的UITextView:codeView
  • PreviewViewController - 視圖與UIWebView中
    • 的UIWebView:webView
    • UIWebView的代碼:webViewCode

DetailViewController

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    // Get the new view controller using [segue destinationViewController]. 
    // Pass the selected object to the new view controller. 
    if ([[segue identifier] isEqualToString:@"webViewCode"]) { 
     PreviewViewController *preview = [segue destinationViewController]; 
     preview.webViewCode = self.codeView.text; 

     self.preview.webViewCode = [[NSString alloc] initWithString:codeView.text]; 
     [[segue destinationViewController] setWebViewCode:codeView.text]; 
    } 

} 

PreviewViewController

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view. 
    [webView loadHTMLString:webViewCode baseURL:nil]; 
} 

一切都連接在界面生成器,包括故事板Segue公司標識符。正如你所看到的,我已經嘗試了多種方式來傳遞信息,但只是出現了錯誤。有什麼我失蹤?

+0

你會得到什麼錯誤?請明確點。 – matt

+0

你必須有一些空值,你有沒有嘗試進入代碼? – ryudice

+0

@matt沒有錯誤,但WebView沒有任何東西 - 只是空白。我的道歉不包括在我原來的帖子。 –

回答

0

這個代碼是沒有意義的:

if ([[segue identifier] isEqualToString:@"webViewCode"]) { 
    PreviewViewController *preview = [segue destinationViewController]; 
    preview.webViewCode = self.codeView.text; 

    self.preview.webViewCode = [[NSString alloc] initWithString:codeView.text]; 
    [[segue destinationViewController] setWebViewCode:codeView.text]; 
} 

您創建一個局部變量預覽,類型PreviewViewController的。正如其他海報指出,需要一個類型轉換到這個以避免編譯器警告:

PreviewViewController *preview = 
     (PreviewViewController*) [segue destinationViewController]; 

真正的問題,不過,是你再不理你剛纔定義的局部變量,並嘗試使用屬性self.preview,它由完全不同的實例變量支持,可能爲零。不要這樣做。擺脫「自我」。位於此行:

preview.webViewCode = [[NSString alloc] initWithString:codeView.text]; 

然後完全刪除下面的行,因爲它與前面的行做了同樣的事情。