2015-04-06 6 views
0

Я передаю 2 значения в PFQueryViewContoller, используя prepareForSegue. Оба свойства определены в файле заголовка (public). Вы можете увидеть в приведенном ниже коде, что я передаю их дважды (один раз без тестирования, чтобы увидеть, является ли округ равным null и как только он проверяет, является ли он нулевым. Я сделал это просто для того, чтобы подчеркнуть, что проблема не связана с тем, мой код перед подготовкой к вызову вызова. Кто-нибудь знает, почему это может не работать? Вероятно, это очень глупая ошибка. Я проверил имя segue (даже скопировал и ввел его в метод prepareforsegue, если есть опечатка я пропустил). Кроме того, ViewController назначения не встроен в любой другой контроллер представления. Это обычай переходить в случае, если это имеет значение.Передача данных с использованием 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

Кстати, я вставил NSLogs внутри if ([[идентификатор segue] isEqualToString: @ "toPizzaSpots"]) условно, чтобы код вызывался, когда я выходил, и он вызывается. Мой PFQueryViewContoller имеет метод, называемый initWithCoder, имеет ли это какое-либо отношение к тому, почему данные не попадают в мой destinationViewController? – stonybrooklyn

+0

Что означает «не работает»? Выполняется ли segue успешно, но данные не передаются? – rdelmar

+0

Каким образом передача данных не работает? В какой момент вы определяете в «PizzaSpotTVC», что данные не были переданы? – luk2302

ответ

0

Глядя на значения свойств, передаваемых через prepareForSegue:sender: не может быть сделано в метод init. К моменту, когда вызывается prepareForSegue, уже был вызван метод init. Значения этих свойств будут установлены, когда вызывается время viewDidLoad, поэтому безопасно обращаться к ним.

0

InitWithCoder - это самый первый метод, называемый жизненным циклом ViewController при создании PFQueryViewContoller. Чтобы получить доступ к свойствам, заданным методом prepareForSegue, вам необходимо получить к ним доступ в методе viewDidLoad. Спасибо rdelmar за ответ на вопрос. FYI для всех, кто имеет дело с этой проблемой, если вы измените свойство в методе viewDidLoad, на который опирается ваш запрос на анализ (например, чтобы вытащить из соответствующей таблицы в базу данных Parse), viewDidLoad выполняется за достаточно короткое время, чтобы отправить это parseClassName в Разбор для правильного выполнения запроса. Вначале это было моей проблемой, когда я попытался получить доступ к свойству в методе initWithCoder, и было так рано, что он не работал. Я думал, что он должен быть там, чтобы заставить запрос Parse работать (но он doesn't- viewDidLoad достаточно довольно рано)