2011-11-26 11 views
12

Bir gezinme çubuğunun sağ tarafına 2 düğme dizisi eklemeye çalışıyorum, ancak kodu çalıştırdığımda bir istisna alıyorum.navigationIntem.rightBarButtonItem sonuçlarına bir dizi UIButtons ekleme NSInvalidArgumentException

'NSInvalidArgumentException', nedeni: '- [UIButton isSystemItem]: tanınmayan seçici örneğine gönderilen

Kodum gerçekten oldukça basittir: Ben iPhone 5.0 üzerinde çalıştırıyorum

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]; 

simülatör. Herhangi bir fikir? Şimdiden teşekkürler. Al

cevap

27

Doğrudan UIButtons ekleyemezsiniz. İlk olarak UIBarButtonItems olarak sarmanız gerekiyor - sadece bir dizi geçirdiğiniz için derleyici uyarısı yok.

Düğme içinde özel görünüm olarak ileterek, initWithCustomView: kullanarak çubuk düğme öğeleri oluşturun. Veya, düğmelerinizdeki değere bağlı olarak, doğrudan bar düğmesi öğeleri oluşturun.

+1

Cevabınız için teşekkür ederiz. Bunu fark etmeliydim. Çok basit :-) – Alan

+0

"UIButton" uBarButtonItem ile değiştirin ve işe yarıyor. 'InitWithCustomView' ile oluşturmanıza gerek yoktur. UIBarButtonItems dizisini "self.navigationItem.rightBarButtonItemS" öğesini –

+0

@ proca2.0 bitiminde ** S ** olarak atadığınızdan emin olun, bu nedenle ** "Veya, düğmelerinizdeki değere bağlı olarak, çubuk düğmesi oluşturun. doğrudan öğeler. "** – jrturton

1

UIButton nesneleri olmayan UIBarButtonItem nesnesinin bir dizi vermeniz amaçlanmıştır. UIBarButtonItem'in ne UIButton ne de UIView'den miras aldığını unutmayın.

10

Buradaki hile, UIButton nesneleri yerine UIBarButtonItem nesnelerini kullanmaktır. UIBarButtonItems şöyle UIButtons oluşturulabilir: UIBarButtonItems oldukça Oraya bakmak içindir zaman

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

Ancak, gezinme çubuğunda UIButtons kullanarak, genellikle kötü bir fikirdir. UIBarButtonItem Class Reference'u ziyaret etmeyi düşünün.

+0

Aslında bunu yazdığınız için teşekkürler. –

İlgili konular