/ / Pridanie radu UIButtonov do navigationItem.rightBarButtonItem vedie k NSInvalidArgumentException - iphone, xcode, kakao-touch

Pridanie poľa UIButtons na navigáciuItem.rightBarButtonItem vedie k NSInvalidArgumentException - iphone, xcode, kakao-touch

Snažím sa pridať napravo od navigačnej lišty rad 2 tlačidiel, ale pri spustení kódu sa mi zobrazí výnimka.

"NSInvalidArgumentException", dôvod: "- [UIButton isSystemItem]: nerozpoznaný selektor poslaný do inštancie

Môj kód je celkom jednoduchý:

   UILabel * label = [[UILabel alloc] initWithFrame:CGRectMake(0,0,100,45)];
label.backgroundColor=[UIColor clearColor];
label.text = @"Test 2 Buttons";

UIButton *button1 = [UIButton buttonWithType:UIButtonTypeCustom];
button1.frame = CGRectMake(00.0f, 0.0f, 32.0f, 32.0f);

UIButton *button2 = [UIButton buttonWithType:UIButtonTypeCustom];
button2.frame = CGRectMake(00.0f, 0.0f, 32.0f, 32.0f);

NSArray *rightBarButtons = [[NSArray alloc] initWithObjects:button2, button1, nil];


UINavigationItem* navItem = self.navigationItem;
navItem.titleView = label;
navItem.rightBarButtonItems = rightBarButtons;
[rightBarButtons release];
[label release];

Používam ho na simulátore iPhone 5.0. Nejaký nápad? Vopred ďakujem. Al

odpovede:

28 pre odpoveď č. 1

Môžete ich priamo pridať UIButtons, Musíte ich zabaliť ako UIBarButtonItems Najprv - neexistuje žiadne varovanie kompilátora, pretože práve míňate pole.

Položky tlačidla na lište vytvorte pomocou initWithCustomView:, odovzdanie tlačidla ako vlastné zobrazenie. Alebo, v závislosti od toho, čo je vo vašich tlačidlách, priamo vytvorte položky na paneli.


10 pre odpoveď č. 2

Trik je tu použiť objekty UIBarButtonItem namiesto objektov UIButton. UIBarButtonItems je možné vytvárať z UIButtonov takto:

UIBarButtonItem *myItem = [[UIBarButtonItem alloc] initWithCustomView:uibuttonObject];

Používanie UIButtonov v navigačnej lište je však všeobecne zlý nápad, keď majú UIBarButtonItems vyzerať pekne. Zvážte návštevu UIBarButtonItem Odkaz na triedu.


1 pre odpoveď č. 3

Ste odhodlaní dať im rad UIBarButtonItem objekty nie sú objekty UIButton. Všimnite si, že UIBarButtonItem nededí ani od UIButton, ani UIView.