Frage

Ich habe ein Problem mit einer Tabelle und zeige eine andere Ansicht an, wenn der Benutzer eine Tabellenzelle berührt. Ich verwende einen UitabbarController für die Hauptansicht, um verschiedene Ansichten anzuzeigen. Ich benutze dann einen uInavigationController, wenn der Benutzer eine UitableView -Ansicht auswählt, um die nächste Ansicht aus der Tabellenzellauswahl anzuzeigen.

Mein Problem ist Folgendes: Wenn sie die Tabellenzelle auswählen, wird die Zelle hervorgehoben und die nächste Ansicht wird nicht angezeigt. Ich benutze ib. Alle Beispiele, die ich gefunden habe, sind dieselben wie ich, außer dass die Beispiele funktionieren!

Ich habe die Controller mit einem Wörterbuch in einem nsmutablearray geladen. Ich habe diesen Code auch ausprobiert, indem ich direkt einen Ansichtscontroller erstellt habe, anstatt das Array -Element zu verwenden. Gleiche Ergebnisse ....

Ich habe den Zielcontroller (Calc1ViewController) überprüft, um sicherzustellen, dass mit dem Controller nichts falsch war. Bei direkter Anzeige wird der Controller (Calc1ViewController) korrekt angezeigt.

Hier ist ein Code .....

Die Initialisierung des View -Controllers im Wörterbuch:

Calc1ViewController *calc1ViewController = [[Calc1ViewController alloc] init];
[menuList addObject:[NSDictionary dictionaryWithObjectsAndKeys:
                     NSLocalizedString(@"SSC - page 1",@""), @"title",
                     calc1ViewController, @"viewController",
                     nil]];
[calc1ViewController release];

Ich habe es auch versucht, ohne das Wörterbuch zu verwenden - erstellte anstelle des [[Menulist ObjectatIndex: ...] einen View Controller; Zeile - Durch das Erstellen des Ansichtscontrollers wie folgt:

Calc1ViewController *targetViewController = [[Calc1ViewController alloc] init];


// the table's selection has changed, switch to that item's UIViewController
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    UIViewController *targetViewController = [[menuList objectAtIndex: indexPath.row] objectForKey:@"viewController"];
    [[self navigationController] pushViewController:targetViewController animated:YES];
    targetViewController = nil;
}

Der Navigationscontroller ist im AppDelegate definiert und über IB mit dem RootViewController verbunden.

Wenn ich eine Tabellenzeile auswähle, wird im Debugger angezeigt, dass der PushViewController -Code ausgeführt wird, aber die nächste Ansicht wird nicht angezeigt. Hier ist ein Beispiel:

ALT-Text http://thecoolestcompany.com/ssc-table-view.jpg

Irgendwelche Ideen?

War es hilfreich?

Lösung

Endlich herausgefunden ......

Ich hatte den UinavigationController und den Uitabbarcontroller auf derselben Ebene. Nachdem der Navigationscontroller als Kind auf den Registerkartenbalken bewegt war, funktionierte alles. Sie können so viele Navigationscontroller zu einer Registerkartenleiste hinzufügen, wie Sie möchten. In IB ist ein wenig verwirrend. Sie müssen den NavigationScontroller in die TABBAR als neuer Registerkartenleiste ziehen.

Andere Tipps

Es gibt nicht viel zu tun mit dem Code, den Sie bereitgestellt haben. Ich kann mir nur einen Code vorstellen, ohne dass Sie Ihren View -Controller (den in Ihrem Wörterbuch) oder überhaupt nicht initialisiert haben, oder das Wörterbuch, das Sie beschaffen, dass es nicht die richtige gibt ...

Was ist der Wert von [Self NavigationController], wenn PushviewController aufgerufen wird. Ist es Null?

Was ist der Wert von TargetViewController, wenn es an PushViewController übergeben wird? Ist es Null?

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