2012-06-22 8 views
7

Ich habe folgendes Problem:Navigieren Bildschirm von Tab-Leiste und Tasten

In meiner Anwendung gibt es zwei Möglichkeiten, auf andere Bildschirme zu navigieren: mit den Tasten oder durch eine Tab-Leiste.

Alle Bildschirme haben die Tab-Leiste, die die anderen Bildschirme aufruft, aber der Home-Bildschirm ist der, der Tasten hat, aber keine Tab-Leiste hat.

Wenn ich anfange, meine App zu entwickeln, wähle ich die Tab-Bar-Anwendung Vorlage und es funktioniert gut, wenn ich die Bildschirme durch Drücken der Registerkarte aufrufen. Das Problem beginnt, wenn ich mit dem Startbildschirm arbeite:

  • Ich muss die Tab-Leiste in diesem bestimmten Bildschirm "ausblenden".
  • In der Startseite, wenn ich einen neuen Bildschirm per Tasten aufrufen, verschwindet die Tableiste im neuen Bildschirm (sinnvoll, da der Bildschirm über eine Schaltfläche und nicht über die Tableiste aufgerufen wird).
  • Um dies zu lösen, denke ich, dass ich vielleicht eine benutzerdefinierte Tab-Leiste erstellen kann (ich weiß noch nicht, wie) und es auf meinen Bildschirmen wie ein UIControl, also auf diese Weise, wenn ich die ändern muss Tab-Leiste die Änderungen können auf allen Bildschirmen, die diese Steuerung aufrufen.

    Was empfehlen Sie? Es ist eine gute Idee, eine benutzerdefinierte Tableiste zu erstellen und sie wie ein UIControl zu verwenden? Wenn ja, wie kann ich einen erstellen?

    Ich benutze dies die Fenster

    RecurringGiftListViewController *listViewController = [[RecurringGiftListViewController alloc] initWithNibName:@"RecurringGiftListViewController" bundle:nil]; 
    listViewController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; 
    [self presentModalViewController:listViewController animated:YES]; 
    [listViewController release]; 
    
    +0

    können Sie Bit-Code setzen, die Sie mit Ansichten schieben? – Ahmed

    +0

    @Ahmed sicher, ich benutze dies, um die Windows aufzurufen RecurringGiftListViewController * listViewController = [[RecurringGiftListViewController Alloc] initWithNibName: @ "RecurringGiftListViewController" bundle: nil]; listViewController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; [self presentModalViewController: listViewController animiert: YES]; [listViewController-Version]; – avmauricio

    Antwort

    1

    Es klingt nicht zu nennen wie ou ein Tabbar überhaupt verwendet werden soll. Eine Tableiste sollte nicht verschwinden, wenn Sie eine der Schaltflächen drücken. Stellen Sie es sich wie ein Hauptmenü für Ihre App vor. Sie können andere Bildschirme haben, z. B. einen Navigations-Controller oder einen modalen Dialog, der den gesamten Bildschirm einnimmt, aber dann sollten Sie in der Lage sein, in die Tableiste zurückzukehren.

    Denken Sie noch einmal über die Struktur Ihrer Benutzeroberfläche nach. Vielleicht können Sie es neu anordnen, um Ihren "Startbildschirm" zu einem Dialog zu machen, der von einer der Tab-Seiten aus erreichbar ist?

    +0

    das Problem ist, dass das Design der App vom Client erstellt wird, so glaube ich nicht, dass ich es ändern kann – avmauricio

    +1

    Wenn ein Client Ihnen ein schlechtes Design gibt, müssen Sie sie darüber ergründen, warum es schlecht ist, und wie die Benutzeroberfläche Paradigmen sollen funktionieren. Ich hatte einen Kunden, der im Grunde ein Webdesign für seine App erstellt hat, komplett mit winzigen, kleinen Checkboxen. Der Versuch, Cocoa Touch in ein schlechtes Design zu verwandeln, wird Ihnen nur Schmerzen bereiten und zu einem schlechten Produkt führen. Es ist eine Verlierer-Verloren-Situation. – geon

    1

    Ihr Problem besteht darin, dass Sie Ihre andere Ansicht als "modal" darstellen. Ersetzen Sie den Code mit diesem:

    RecurringGiftListViewController *listViewController = [[RecurringGiftListViewController alloc] initWithNibName:@"RecurringGiftListViewController" bundle:nil];    
    //listViewController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; 
    [self.navigationController pushViewController:listViewController animated:YES]; 
    [listViewController release]; 
    

    Hope this helfen