0

可能重复:
如何在 iOS 中使用 Storyboards 将图像 ID 传递到下一个视图

我的代码是:

- (IBAction) buttonPressed:(id)sender
{
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle: nil]; 
    DestinationViewController *destinationViewController = [storyboard instantiateViewControllerWithIdentifier:@"Destination"];

    destinationViewController.title = @"image property";

    [self.navigationController pushViewController:destinationViewController animated:YES];

    [destinationViewController release];    
}

但我得到的错误是:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Storyboard (<UIStoryboard: 0x68a0840>) doesn't contain a view controller with identifier 'Destination''
 First throw call stack:
(0x13d4022 0x1565cd6 0x448fef 0x39f6 0x13d5e99 0x2114e 0x210e6 0xc7ade 0xc7fa7 0xc7266 0x463c0 0x465e6 0x2cdc4 0x20634 0x12beef5 0x13a8195 0x130cff2 0x130b8da 0x130ad84 0x130ac9b 0x12bd7d8 0x12bd88a 0x1e626 0x2902 0x2875)
terminate called throwing an exception(lldb) 

有什么想法吗?

提前致谢。

4

3 回答 3

1

您需要在 IB 中将视图控制器的标识符设置为“Destination”。以下内容摘自 Apple 在 UIStoryBoard 上的文档。

在故事板文件中唯一标识视图控制器的标识符字符串。在配置故事板文件时,您可以在 Interface Builder 中设置给定视图控制器的标识符。此标识符不是视图控制器对象本身的属性,仅由情节提要文件用于定位视图控制器。

在此处输入图像描述

于 2012-07-17T10:28:59.677 回答
0

您可以使用

(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender

在视图控制器之间传递数据的方法使用

myViewController *viewController = [segue destinationViewController];

指定您的目的地。

于 2012-07-17T10:35:19.060 回答
0

涉及正确设置标识符的答案可能是您的问题。但是,通过获取对故事板的引用并让它实例化控制器,您似乎正在以一种 hacky 的方式执行此操作。

DestinationViewController相反,尝试在视图控制器和情节提要编辑器中创建推送转场并执行以下操作:

- (IBAction)buttonPressed:(id)sender {
    [self performSegueWithIdentifier:@"yourSegueIdentifierHere"];
}

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    DestinationViewController *controller = [segue destinationViewController];
    [controller setImage: ... ];
}
于 2012-07-17T10:41:47.667 回答