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ď č. 1Môž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.