2013-12-22 3 views
0

Я пытаюсь получить код HTML из UITextView и позволить пользователям просматривать его в режиме реального времени в 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, которое поддерживается совершенно другой переменной экземпляра и, вероятно, nil. Не делай этого. избавиться от «я». бит в этой строке:

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

И затем удалить строку ниже полностью, так как он делает то же самое, что и линии раньше.

Смежные вопросы