2010-11-22 9 views
8

Ich programmiere eine UINavigationBar programmatisch zu einer UIView und muss nun ein UIBarButtonItem hinzufügen. Ich versuche, die folgende zu verwenden:Kann UIBarButtonItem nicht zu einer unabhängigen UINavigationBar hinzufügen

UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(dismissView)]; 
[header setItems:[NSArray arrayWithObjects:doneButton, nil] animated:NO]; 
[doneButton release]; 

Meine App stürzt ab und ich finde dies in der Konsole:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIBarButtonItem setNavigationBar:]: unrecognized selector sent to instance 0x4b75c00'

Wäre es zu schätzen, wenn jemand bitte zeigen könnte, was bin ich falsch hier tun .

Danke. Ricky.

Antwort

16

UINavigationBar akzeptiert ein Array von UINavigationItem Objekten, von denen jedes Eigenschaften über eine bestimmte Ebene der Navigationshierarchie enthält. Sie möchten wahrscheinlich eine neue UINavigationItem erstellen und dann die Eigenschaft rightBarButtonItem auf Ihre Schaltfläche Fertig stellen.

+0

Vielen Dank dafür! –

+0

Funktioniert immer noch perfekt mit iOS 7 Danke! – user3344977

4

Es ist unwahrscheinlich, dass Sie eine neue UINavigationItem erstellen müssen, wie die Antwort derzeit angibt. Im Gegensatz dazu, wenn Sie bereits eine UINavigationBar initialisiert von einer Feder haben, die auch eine Ansicht enthält, können Sie einfach Ihre UINavigationItem zu der topItem Eigenschaft Ihrer UINavigationBar hinzufügen. Etwas wie dieses:

UIBarButtonItem *closeBtn = [[UIBarButtonItem alloc] initWithTitle:@"Close" 
                  style:UIBarButtonItemStyleBordered 
                  target:self 
                  action:@selector(closeBtnPressed)]; 
self.navigationBar.topItem.leftBarButtonItem = closeBtn; 
[closeBtn release]; 
Verwandte Themen