2

私がやろうとしていることの要点は、ユーザーが前のウィンドウに入力したテキストにセグエしているウィンドウのラベルの値を設定することです。

ユーザーは、[読み取り] をクリックしてセグエします。

私の prepareForSegue メソッドは次のとおりです。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    ReadingViewController *destination = segue.destinationViewController;

    destination.textToRead = self.textInput.text;
}

textToReadユーザーが入力したテキストを保持する単なる NSString オブジェクトです。(このテキストは、viewDidLoadメソッドでラベルとして設定されます。)

セグ先のウィンドウは、期待どおりに別のビュー コントローラー (ReadingViewController) として設定され、「読み取り」UIButton から次のウィンドウにコントロールをドラッグしてセグエを作成しました。

問題が何であるかを理解できないようです。これが与えるエラーは次のとおりです。

2013-03-13 19:00:08.119 Project Lego[1523:c07] -[UINavigationController setTextToRead:]: unrecognized selector sent to instance 0x894d230
2013-03-13 19:00:08.122 Project Lego[1523:c07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UINavigationController setTextToRead:]: unrecognized selector sent to instance 0x894d230'
*** First throw call stack:
(0x1c92012 0x10cfe7e 0x1d1d4bd 0x1c81bbc 0x1c8194e 0x2949 0x45bb87 0x45bc14 0x10e3705 0x172c0 0x17258 0xd8021 0xd857f 0xd76e8 0x46cef 0x46f02 0x24d4a 0x16698 0x1beddf9 0x1bedad0 0x1c07bf5 0x1c07962 0x1c38bb6 0x1c37f44 0x1c37e1b 0x1bec7e3 0x1bec668 0x13ffc 0x244d 0x2375 0x1)
libc++abi.dylib: terminate called throwing an exception
(lldb) 
4

3 に答える 3

4

NavigationVCに組み込まれているViewControllerにアクセスする場合は、次のようにします。

 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
    {
        UINavigationController *nav = (UINavigationController*)segue.destinationViewController;
        ReadingViewController *destination = [nav.viewControllers objectAtIndex:0];
        destination.textToRead = self.textInput.text;
     }
于 2013-03-13T22:22:52.213 に答える
1

あなたのセグエはUINavigationController、viewcontroller クラスではなく、 を参照しています。ストーリーボードをチェックして、セグエが正しいコントローラーに接続していることを確認してください。

于 2013-03-13T22:04:06.647 に答える
1

ナビゲーションコントローラーで textToRead を設定しているようです。これをView Controllerで設定したいと思います。もしそうなら、あなたはする必要があります

    if ([segue.destinationViewController 
                 isKindOfClass:[UINavigationController class]])
    {
       mvc = (ReadingViewController *) [segue.destinationViewController topViewController];
       mvc.textToRead = self.textInput.text; 

    } else {

       ReadingViewController *destination = segue.destinationViewController;
       destination.textToRead = self.textInput.text;
   }
于 2013-03-13T22:07:03.920 に答える