我正在尝试从UITextView获取HTML代码,并让用户在下一个segue的UIWebView中查看它。这是我到目前为止所拥有的。
codeView
webView
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];
}
所有内容都在界面构建器中连接,包括Storyboard Segue Identifier。正如您所看到的,我已经尝试了多种方式来传递信息,但只是出现了错误。有什么我想念的吗?
答案 0 :(得分: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,该属性由完全不同的实例变量支持,可能为nil。不要那样做。摆脱“自我”。在这一行:
preview.webViewCode = [[NSString alloc] initWithString:codeView.text];
然后完全删除下面的行,因为它与之前的行完全相同。