UISwitch Control im UINavigationBar
In der neuen iPhone / iPod touch Anwendung “Zitate: Latein” ist in einer View ein UISwitch Objekt zum Umschalten zwischen der lateinischen und deutschen Anzeige eingebaut. Leider kann man dieses Control nicht weiter anpassen. Deshalb hier leider nur eine kurze Beschreibung wie es implementiert ist. Wenn eine UIView in einen UINavigationController zur Ansicht gepushed wird kann man zum Beispiel einen Button in dem rechten Bereich des Navigationbars anzeigen.
- (void)viewDidLoad { self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"Edit" style:UIBarButtonItemStylePlain target:self action:@selector(editBtn)] autorelease]; }
In diesem Fall erscheint nach dem Laden der View ein Button mit dem Label “Edit” im NavigatinBar. Bei Klick wird im aufrufenden ViewController die Methode
- (void)editBtn;
aufgerufen.
Wenn man nun statt einem UIBarButtonItem ein anderes UIControl wie den UISwitch einfügen möchte muss man den UIButton mit einer Custom View initilisieren. In diesem Fall mit dem UISwitch:
UISwitch *sw = [[UISwitch alloc] init]; [sw addTarget:self action:@selector(switched) forControlEvents:UIControlEventValueChanged]; UIBarButtonItem *bi = [[UIBarButtonItem alloc] initWithCustomView: sw]; self.navigationItem.rightBarButtonItem = bi; [sw release]; [bi release];
Wenn der UISwitch den Status wechselt wird im aufrufenden Controller die Methode
- (void)switched;
aufgerufen.