2013-12-22 210 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]; 

然后完全删除下面的行,因为它与前面的行做了同样的事情。