2011-12-04 5 views
58

Gdy widok jest ładowany ręcznie, programista pozostaje pod kontrolą, jeśli chodzi o inicjalizacje, wybieramy, który inicjalizator wywołuje, jakie zmienne ustawiać itp.W jaki sposób jest inicjowany widok po załadowaniu za pomocą storyboardu?

Gdy widok jest ładowany z ujęcia storyboardu ... co się z tym dzieje inicjator? Gdzie należy ustawić zmienne, które chciałbym udostępnić po wczytaniu widoku?

Proszę pomóż mi zrozumieć sekwencję tutaj. W jaki sposób powstaje instancja klasy, kto ją tworzy i jak możemy interweniować i pomóc w jej dostosowaniu do naszych upodobań?

Odpowiedz

89

Po załadowaniu widoku ze stalówki lub scenorysu, wywoływana jest metoda -initWithCoder:. Podobnie jak -initWithFrame:, -initWithCoder: jest wyznaczonym inicjatorem dla UIView. Jeśli zamierzasz wykonać dowolną niestandardową inicjalizację dla podklasy UIView, powinieneś upewnić się, że dzieje się tak w przypadku obu tych metod. Jedną z powszechnych technik jest dodanie wspólnej metody inicjalizacji, którą wywołuje się zarówno z -initWithFrame: i -initWithCoder:. Aby uzyskać bardziej szczegółowy opis, zobacz my answer do Custom view and implementing init method?.

Należy pamiętać, że dokumentacja -initWithFrame: wyjaśnia:

Jeśli używasz interfejsu Builder zaprojektować interfejs, metoda ta nie jest wywoływana, gdy panel obiekty są następnie ładowane z nib pliku. Obiekty w pliku końcówki są odtwarzane, a następnie inicjowane za pomocą metody initWithCoder :, która modyfikuje atrybuty widoku , aby dopasować atrybuty przechowywane w pliku nib.

Powiązane problemy