我使用prepareForSegue将2个值传递给PFQueryViewContoller。这两个属性都在头文件(public)中定义。您可以在下面的代码中看到我传递了两次(一次没有测试,看看县是否为空,一次检查它是否为空。我这样做是为了强调该问题与是否相关无关在准备调用之前,我的代码中的其他地方已经被设置了。有没有人知道为什么这可能不起作用?这可能是一个非常愚蠢的错误。我已经检查了segue的名字(甚至复制并粘贴到prepareforsegue方法中,以防我错过了一个错字。)此外,目标viewcontroller没有嵌入到任何其他视图控制器中。这是一个自定义segue,以防万一。
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([[segue identifier] isEqualToString:@"toPizzaSpots"])
{
// Get reference to the destination view controller
PizzaSpotTVC *vc = [segue destinationViewController];
// Pass any objects to the view controller here, like...
vc.county = self.county;
vc.no = 8;
if (self.county){
vc.county = self.county;
vc.no = 8;
}
}
}
答案 0 :(得分:0)
查看通过prepareForSegue:sender:
传入的属性值无法在init方法中完成。调用prepareForSegue
时,已调用目标视图控制器的init方法。这些属性的值将在调用viewDidLoad时设置,因此可以安全地访问它们。
答案 1 :(得分:0)
创建PFQueryViewContoller时,InitWithCoder是ViewController生命周期中调用的第一个方法。要访问prepareForSegue方法设置的属性,您需要在viewDidLoad方法中访问它们。感谢rdelmar回答这个问题。对于处理此问题的任何其他人,仅供参考,如果您更改了您的Parse查询所依赖的viewDidLoad方法中的属性(例如,从Parse数据库中的正确表中提取),则viewDidLoad会在足够的时间内执行以将此parseClassName发送到解析以正确执行查询。当我尝试在initWithCoder方法中访问该属性时,这是我最初关注的问题,它很早就没有工作 - 我认为需要在那里让Parse查询工作(但它不是 - viewDidLoad足够早了)