2010-01-19 36 views
14

Bu çalışmıyor gibi görünüyor. Neyi yanlış yapıyorum?program aracılığıyla oluşturmaya çalışıyor rightBarButtonItem

-(void)awakeFromNib{ 
    UIBarButtonItem *rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(showNewEventViewController)]; 
    self.navigationItem.rightBarButtonItem = rightBarButtonItem; 
    NSLog(@"awaked"); 
    [rightBarButtonItem release]; 
} 
+1

görünümü hakkında Steve'in comment yük, bütün hala gelmez eğer ayarlayıcı yöntem setRightBarButtonItem kullanmayı deneyin etmişti muhtemel sesler vermedi Çalışıyorum –

cevap

11

Normalde viewDidLoad yöntemi yerine awakeFromNib yönteminde bu kodu koymak; Sorunun nerede yandığından emin değilim. "Çalışmıyor" ne demektir?

+0

Çalışmıyorsa, düğme nav çubuğunda görüntülenmiyor. –

+0

Steve haklı. Bunun yerine -viewDidLoad'a yükleyin. -awakeFromNib, bir denetleyiciye çağrılmaz - sadece UIView sınıfında. –

+8

Steve ve Matt'in ikisi de yanlış. Bu kod, eğer VC'nin kendisi aslında bir uçtan yüklenirse '-awakeFromNib' içinde iyidir. VC'ler de dahil olmak üzere bir uçtan yaratılan her nesne üzerinde Matt-'awakeFromNib' denir. Muhtemelen VC'nin kendisi bir uçta bulunmaz, ama bir uç kullanır, bu yüzden Sam'in karışıklığı. Bu durumda, -initWithNibName: bundle: 'yazmalıdır. –

3

yerine bu deneyin:

- (void) initUI { 
    UIBarButtonItem *btnCancel = [[[UIBarButtonItem alloc] initWithTitle:@"Cancel" 
            style:UIBarButtonItemStyleBordered 
            target:self 
            action:@selector(dismiss)]autorelease];  

    self.navigationItem.rightBarButtonItem = btnCancel; 

    //[btnCancel release]; no need to explicitly release the item 

} 
+3

Niçin bu merakı açığa çıkarmaya gerek yok, sadece meraktan mu? – diatrevolo

+1

Çünkü otomatik olarak yayınlandı. – pt2ph8

21

benim tahminim, yanlış nesneye UIBarButtonItem eklemek! (Muhtemelen yaptığı gibi, yerine UINavigationController kadar) sen rootViewController için eklemeniz gerekir

YourRootViewController *theRootController = [[YourRootViewController alloc] init]; 

UINavigationController* navContainer = [[UINavigationController alloc] initWithRootViewController:theRootController]; 

UIBarButtonItem *btnCancel = [[UIBarButtonItem alloc] initWithTitle:@"Cancel" style:UIBarButtonItemStyleBordered target:self action:@selector(dismiss)];  
theRootController.navigationItem.rightBarButtonItem = btnCancel 

[navContainer setModalTransitionStyle:UIModalTransitionStyleCrossDissolve]; 
[self presentModalViewController:navContainer animated:YES]; 
+1

Bu benim için büyük bir şeydi, düğmeyi rootViewController'a değil, nav denetleyicisine atamaya çalışıyordum. Bu kabul edilen cevap olmalı. –

+0

Harika ...! .... –

İlgili konular