Frage

ich normalerweise UIViews verwenden, um meine apps zu machen - aber dies ich ein Navigation verwenden. Ich bin ein Blick nach oben schieben, wo ich Elemente zu einem Array hinzufügen möchten. Allerdings kann ich nicht die Hauptnavigationscontroller Methoden zugreifen usw. Hier die ist aufgebaut

1) AppDelegate fügt Navigationscontroller

[window addSubview:navigationController.view];

2) In RootViewController schiebe ich eine neue UIView

AddNewViewController *addNewViewController = [[AddNewViewController alloc] init];
[self presentModalViewController: addNewViewController animated:YES];

3) Vom AddNewViewController Ich mag dann das Haupt RootViewController zugreifen - aber nicht auf dem Zugang etwas zu sein scheint. Alle Methoden etc. werden erklärt, wie ich getan habe es schon (mit UIViews). Dieser Code kann nicht alles in den RootViewController finden.

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
[appDelegate.navigationController myFunction];

Ich habe myFunction in der RootViewController.h Datei. Ich habe diese Methode vor verwendet, aber nie mit einer Navigationssteuerung. Ich denke, es ist etwas mit hte-Stack zu tun - aber ich kann nicht herausfinden, was ich falsch gemacht habe

!

Hilfe ist sehr willkommen !!

* UPDATE *

Ich habe jetzt verwendet

AddNewViewController *addNewViewController = [[AddNewViewController alloc] init];
[self.navigationController pushViewController:addNewViewController animated:YES];

, um die View-Controller drücken. In meinem Code, ich versuche, die Tableview zugreifen es mit dem folgenden Code laden

[self.navigationController.mainTableView reloadData];   

aber die mainTableView ist nicht zugänglich. Ich habe es erklärt und synchronisierten aber immer noch kann es nicht sehen. Ich habe auch versucht, eine Schleife durch und das Element mit [0] des Stapel (wie unten), aber mit dieser entweder nicht überall bekommen!

NSArray *controllers = [[NSArray alloc] initWithObjects:self.navigationController.viewControllers, nil];

UIViewController *tmpController = [[UIViewController alloc] init];
tmpController = [controllers objectAtIndex:0];
War es hilfreich?

Lösung

Zu allererst

[self presentModalViewController: addNewViewController animated:YES];

tut etwas anderes als

[self.navigationController pushViewController:addNewViewController animated:YES];

Die Namen dieser Methoden für sich sprechen sollte.


Und appDelegate.navigationController ist nicht Ihr RootViewController. Es ist die UINavigationController. Sie können eine NSArray von Viewcontrollers auf die Navigation mit self.navigationController.viewControllers befestigt bekommen. Artikel bei Index 0 sollte Ihr RootViewController sein.

Wenn Sie die Viewcontroller auf den navigationControllers schieben Stack gibt es keine Notwendigkeit, die AppDelegate zu verwenden. Sie können die Navigation mit self.navigationController zugreifen zu können.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top