2

我正在尝试做的事情的要点是将窗口上标签的值设置为用户在前一个窗口中输入的文本。

用户通过单击“读取”来进行转义,这会将他们转义。

这是我的 prepareForSegue 方法:

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

    destination.textToRead = self.textInput.text;
}

textToRead只是一个保存用户输入文本的 NSString 对象。(然后使用该方法将此文本设置为标签viewDidLoad。)

segue 的窗口按预期设置为不同的视图控制器(ReadingViewController),我通过从“Read” UIButton 控制拖动到下一个窗口来创建 segue。

我似乎无法弄清楚问题是什么。这是它给出的错误:

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 中的视图控制器,请执行以下操作:

 - (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

您的 segue 引用的是UINavigationController,而不是您的 viewcontroller 类。检查你的 Storyboard 以确保 segue 连接了正确的控制器。

于 2013-03-13T22:04:06.647 回答
1

您似乎在导航控制器上设置 textToRead 。我假设你想在视图控制器中设置它。如果是这样,您需要

    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 回答