在视图控制器之间传递数据 - Storyboards segues
Posted
技术标签:
【中文标题】在视图控制器之间传递数据 - Storyboards segues【英文标题】:Pass data between View Controllers - Storyboards segues 【发布时间】:2013-11-22 13:17:42 【问题描述】:我不知道为什么,但它在我的项目中不起作用。我所做的与 100 万个教程中的完全一样。
我有 TableViewController 和 TableView,还有简单的 ViewController 了解详细信息。
我在 h 文件中详细声明了 ViewController:
@property (strong, nonatomic) NSString *testText;
那么,在@implementation下的m文件中:
@synthesize testText;
在带有列表的 TableViewController 中,我有:
//declared above: UIViewController *ticketDetailViewController = [segue destinationViewController];
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
NSString *destinationTitle = [[ticketArray objectAtIndex:[indexPath row]] pkey];
[ticketDetailViewController setTitle:destinationTitle];
一切都很好。标题是正确的,所以必须有联系。但是,现在我想传递其他数据......所以我做了 testText 属性,我想从 TableViewController 访问,但我不能:/
错误提示:在“UIViewController *”类型的对象上找不到属性“testText”
真正奇怪的是..在调试过程中,有testText(如下图所示):
虽然当我想实现它时..它没有找到:
有人知道发生了什么吗?
【问题讨论】:
【参考方案1】:变化:
UIViewController *ticketDetailViewController = [segue destinationViewController];
到:
TicketDetailViewController *ticketDetailViewController = (TicketDetailViewController *)[segue destinationViewController];
以便编译器知道您正在使用什么类型的类(并且它可以找到/完成相应的属性)。
【讨论】:
【参考方案2】:您需要将详细视图控制器声明为详细视图控制器,而不是 UIViewController。
ViewController *ticketDetailViewController = [segue destinationViewController];
代替
UIViewController *ticketDetailViewController = [segue destinationViewController];
另外,你应该用 copy 而不是 strong 声明你的 testText 属性。
@property (copy, nonatomic) NSString *testText;
【讨论】:
【参考方案3】://declared above: UIViewController *ticketDetailViewController = [segue destinationViewController];
你不想要 UIViewController 类的 ViewController,你想要 TicketDetailViewController 或者你已经命名了目标 ViewController 类。在那个类中,我假设你有一个名为 testText 的属性。
正确的声明应该是
TicketDetailViewController *ticketDetailViewController = [segue destinationViewController];
其次,你不再需要这个了。编译器会自动执行此操作。
@synthesize testText;
【讨论】:
以上是关于在视图控制器之间传递数据 - Storyboards segues的主要内容,如果未能解决你的问题,请参考以下文章
如何在视图控制器之间传递数据而不在 ios 中使用 segue?
在视图控制器之间传递 iOS 10 Segue 中的数据 [重复]