Próbuję pchnąć ViewController programowo do kontrolera nawigacji, I używam mojego storyboard, aby go utworzyć.instantiateViewControllerWithIdentifier wydaje się wywoływać viewdidload
tutaj jest mój kod:
+ (void) pushViewController:(NSString *) identifier ForItems:(NSMutableArray *) items sender:(UIViewController *) sender {
GenericViewController *viewController = (GenericViewController *)[sender.storyboard instantiateViewControllerWithIdentifier:identifier];
viewController.items = [[NSMutableArray alloc] init];
[viewController.items removeAllObjects];
[viewController.items addObject:[[NSMutableArray alloc] init]];
[viewController.items[0] addObjectsFromArray:items];
[sender.navigationController pushViewController:viewController animated:YES];
}
W GenericViewController viewDidLoad
Używam items
. Dzięki niektórym punktom przełomowym widziałem, że GenericViewController viewDidLoad
tuż po instantiateViewControllerWithIdentifier
z items
równe zeru.
Myślałem, że MyViewController viewDidLoad
jest wywoływana podczas metody pushViewController
.
Każdy pomysł, dlaczego viewDidLoad
jest wywoływana podczas instantiateViewControllerWithIdentifier
?
--- Aktualizacja ---
Oto moja viewDidLoad
- (void)viewDidLoad
{
for (MyItem *currentItem in self.items[0]) {
[Do Something]
}
[super viewDidLoad];
[...]
}
self.items
jest zerowa. więc nic nie jest zrobione.
umieścić kompletny kod please..what jest myItem i viewDidLoad method..the problem nie jest this..cause podczas inicjowania obiektu, jest żywa. –
Musisz podać więcej informacji.Pokaż całą metodę, w której używasz obiektu instantiateViewControllerWithIdentifier :. Metoda, instantiateViewControllerWithIdentifier :, nie spowoduje wywołania metody viewDidLoad, więc dzieje się coś innego. – rdelmar
dziękuję @rdelmar Jestem prawie pewien, że 'instantiateViewControllerWithIdentifier' nie wywołuje' viewDidLoad'. Aktualizuję swój kod, używam statycznego menedżera, aby zainicjować i wypchnąć mój nowy viewController –