UISegmentedControl zur Navigations Bar hinzufügen? [DONE]

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • UISegmentedControl zur Navigations Bar hinzufügen? [DONE]

    Hallo iOS- Community,

    ich hab eine App mit einer TabBar. Bei dem ersten Controller der TabBar füge ich wie folgt ein UISegmentControl erfolgreich zur NavigationBar hinzu:

    Quellcode

    1. NSArray *itemArray = [NSArray arrayWithObjects:@"AAA", @"BBB", nil];
    2. myControl = [[UISegmentedControl alloc] initWithItems:itemArray];
    3. [myControl setFrame:CGRectMake(0.0f, 0.0f, 280.0f, 36.0f)];
    4. [myControl setCenter:CGPointMake(0.0f, 0.0f)];
    5. myControl.segmentedControlStyle = UISegmentedControlStylePlain;
    6. myControl.selectedSegmentIndex = 0;
    7. [myControl addTarget:self action:@selector(getSelectedItem:) forControlEvents:UIControlEventValueChanged];
    8. [self.navigationController.navigationBar.topItem setTitleView: myControl];
    Alles anzeigen



    Bei meinem dritten Controller der TabBar füge ich ebenfalls mit genau dem selben Code ein UISegmentedControl hinzu - jedoch ist es diesmal nicht sichtbar...keine Ahnung warum!!!
    Wenn ich das Element statt zur NavigationBar als rechtes NavigationItem hinzufüge wird es sichtbar:

    Quellcode

    1. UIBarButtonItem *seg = [[UIBarButtonItem alloc] initWithCustomView:myControl]; //statt [self.navigationController.navigationBar.topItem setTitleView:locationControl];
    2. self.navigationItem.rightBarButtonItem = seg;



    Ich möchte die UISegmentedControl aber mittig dargestellt haben ... woran kann es liegen?
    Touches werden alle richtig erkannt --> Element funktioniert soweit ganz gut.

    BTW: Beim debuggen wird die UISegmentedControl ausgeführt. Es tritt kein bad_exc auf oder sonstiger Fehler auf!

    LG MrOSX

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von MrOSX ()

  • Per

    Quellcode

    1. [self.navigationController.navigationBar.topItem setTitleView:myControl];

    weist Du das SegmentedControl direkt dem aktuellen NavigationItem der NavigationBar zu.

    Du solltest das SegmentedControl jedoch lieber beim NavigationItem des ViewControllers setzen, also so:

    Quellcode

    1. self.navigationItem.titleView = myControl;

    Die Zuweisung zum NavigationItem des ViewControllers sollte dabei im viewDidLoad des ViewControllers stehen.
  • Danke für eure Hilfestellungen!

    @MCDan:
    Mit folgender Zuweisung hab ich mein Problem nun gelöst:

    Quellcode

    1. self.navigationItem.titleView = myControl;


    Ich versteh zwar den unterschied nicht ... ich hab für jeden UIViewController in der TabBar jeweils einen eigenen UINavigationController. Eig. sollte meine UISegmentControl ebenfalls zur aktuellen Navigation hinzugefügt werden...

    Danke! :)