2015-04-06 70 views
0

我使用prepareForSegue将2值传递给PFQueryViewContoller。这两个属性都在头文件(public)中定义。你可以在下面的代码中看到,我将它们传递给了两次(一次没有测试,看看县是否为空,并且一次检查它是否为空)。我这样做只是为了强调问题与县是否在其他地方设置无关我的代码之前prepareforsegue被调用。有没有人有任何想法,为什么这可能不工作?这可能是一个非常愚蠢的错误。我已经检查了segue的名称(甚至复制并将其粘贴到prepareforsegue方法,以防有一个错字我错过了)。而且,目的地视图 - 控制并没有嵌入任何其他视图控制器,这是在重要的情况下,自定义SEGUE。传递数据使用prepareForSegue不工作

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

顺便说一句,我在if([[segue identifier] isEqualToString:@“toPizzaSpots”])中插入NSLogs,以确保代码在被调用时被调用并被调用。我的PFQueryViewContoller有一个名为initWithCoder的方法,这是否与数据没有进入我的destinationViewController的原因有关? – stonybrooklyn

+0

“不工作”是什么意思? segue是否成功执行,但数据不通过? – rdelmar

+0

数据传输不能正常工作的方式是什么?您在“PizzaSpotTVC”中确定哪些数据尚未传输? – luk2302

回答

0

在通过prepareForSegue:sender:传递的属性值看,不能内部完成一个init方法,在调用prepareForSegue时,目标视图控制器的init方法已被调用。这些属性的值将在调用viewDidLoad时设置,因此在那里访问它们是安全的。

0

当创建PFQueryViewContoller时,InitWithCoder是ViewController生命周期中第一个调用的方法。为了访问由prepareForSegue方法设置的属性,您需要在viewDidLoad方法中访问它们。感谢rdelmar回答这个问题。如果您更改Parse查询所依赖的viewDidLoad方法中的属性(例如,从Parse数据库中的适当表中提取),那么viewDidLoad会执行足够的时间将此parseClassName发送给解析以正确执行查询。当我试图访问initWithCoder方法中的属性时,这是我最担心的问题,并且它很早就无法工作 - 我认为它需要在那里才能使Parse查询正常工作(但它不会影响viewDidLoad是足够早的)