我不知道为什么,但它在我的项目中不起作用。我和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(如下面的屏幕所示):
虽然当我想实现它时......它找不到:
任何人都知道发生了什么事?
答案 0 :(得分:2)
变化:
UIViewController *ticketDetailViewController = [segue destinationViewController];
为:
TicketDetailViewController *ticketDetailViewController = (TicketDetailViewController *)[segue destinationViewController];
这样编译器就知道你正在使用什么类型的类(它可以找到/完成相应的属性)。
答案 1 :(得分:2)
您需要将详细视图控制器声明为详细视图控制器,而不是UIViewController。
ViewController *ticketDetailViewController = [segue destinationViewController];
而不是
UIViewController *ticketDetailViewController = [segue destinationViewController];
此外,您应该使用copy而不是strong来声明testText属性。
@property (copy, nonatomic) NSString *testText;
答案 2 :(得分:1)
//declared above: UIViewController *ticketDetailViewController = [segue destinationViewController];
您不需要类UIViewController的ViewController,您需要TicketDetailViewController,或者您已命名目标ViewController类。在那个类中,我假设你有一个名为testText的属性。
正确的声明应该是
TicketDetailViewController *ticketDetailViewController = [segue destinationViewController];
其次你不再需要这个了。编译器会自动执行此操作。
@synthesize testText;