iOS раскадровки

У меня есть приложение iOS с одним представлением для iPad и использование раскадровки.

  • У меня есть контроллер просмотра по умолчанию, созданный xcode (vc1). Я помещаю кнопку на его вид.

  • Затем я перетаскиваю новый контроллер представления (screen2VC) на раскадровку.

  • Я также создаю новый подкласс контроллера представления (vc2SubClass)

  • Я связываю screen2VC с этим подклассом через инспектора идентификации.

  • На представлении screen2VC у меня есть ярлык. Я перетаскиваю метку на vc2SubClass, чтобы создать выход.

  • Я создаю переход между кнопкой vc1 и кнопкой vc2.

  • В переопределении PerformSegue у меня есть следующий код:

if ([segue.identifier isEqualToString:@"segue1"])
{
    screen2VC* vc = [segue destinationViewController];
    vc.label1.text = @"screen 2";
}

When I run the code and press the button, the segue works and transitions between the two views just fine, but screen2VC's label is never set to 'screen 2'. As a test, I placed the label1.text = @"screen 2"; code into vc2SubClass, but that made no difference. It seems there's still no association between screen2VC and vc2SubClass, even though the former is subclassing the latter and the label is pointing to a UILabel outlet.

Любые идеи?


person auburg    schedule 21.10.2012    source источник
comment
Просто проверка на вменяемость. Связаны ли label1 и метка в screen2VC nibfile?   -  person barley    schedule 22.10.2012


Ответы (1)


Когда вы находитесь в performSegue: из vc1, иерархия представлений vc2 еще не настроена. Обычный способ сделать это — иметь свойство в vc2, которому временно присваивается строка во время performSegue:. Затем это свойство используется для обновления метки в файле viewWillAppear: vc2.

(Когда вы говорите "В качестве теста я поместил код 'label1.text = @"screen 2";' в vc2SubClass, но это не имеет значения", я не понимаю, что там происходит. В какой метод был помещен этот код?)

person Phillip Mills    schedule 21.10.2012
comment
Привет - в точку! Я не знал, что второе представление еще не было инициализировано в момент вызова перехода. Работает, как вы предложили. - person auburg; 22.10.2012