2009-08-30 21 views
14

Bir DetailsViewController'ı zorlayan bir UINavigationController var. Bu DetailsViewController'da, her UINavigationController ile birlikte gelen araç çubuğunu kullanmak istiyorum (iPhone OS3.0'dan beri). UIToolbar animasyonlu ise, nedense,UIToolbar öğeler şu anda gösterilmiyor

- (void) viewDidLoad { 
    UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemBookmarks target:self action:@selector(selectTemplate)]; 
    NSArray *items = [NSArray arrayWithObject: item]; 

    TestUIAppDelegate *delegate = [[UIApplication sharedApplication] delegate]; 
    UINavigationController *navController = delegate.navigationController; 

    [navController setToolbarItems: items animated:NO];  
    [navController setToolbarHidden: NO animated: YES]; 
} 

Ama:

Yani, benim DetailsViewController içinde viewDidLoad bir UIBarButtonItem oluşturmak, ben bir diziye eklemek ve devre dışı el navigasyon kontrolöre ekrana, madde araç çubuğuna eklenmez.

Bunun çalışması için UIToolbar ile bir takım özel siparişler yapılması gerekiyor mu?

P.S .: uygulama, yatay moddadır ve navigationController.view öğesinde dönüş dönüşü vardır. Bununla bir ilgisi olabilir mi?

cevap

37

Daha fazla kazma ve hata ayıklama işlemi yaptık ve ben navigationController değiştirmeye çalışmak konusundaki yaklaşımımın yanlış olduğu sonucuna varıyorum. Bunun yerine DetailsViewController aracının toolbarItems özelliğini ayarlamalıydım.

Bundan sonra benim kod iyi çalıştı:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { 
    if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) { 
     UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithBarButtonSystemItem: UIBarButtonSystemItemBookmarks target:self action:@selector(selectTemplate)]; 

     NSArray *myToolbarItems = [[NSArray alloc] initWithObjects: item, nil];   
     [self setToolbarItems: myToolbarItems]; 
     [myToolbarItems release]; 

    } 
    return self; 
} 
+1

Kısa açıklama - bu sızdırılmış alacak gibi UIBarButtonItem tahsis görünüyor. Muhtemelen otomatikleştirmeye ayarlamanız gerekir. –

+1

Oh, doğru. Ancak NSArray bunu korur, bu yüzden diziye ekledikten sonra _item_'yi serbest bırakabilirim, değil mi? – NSSec

+0

Bu konuda bir -1 yaptım çünkü bu bir viewcontroller için görüntülemenize izin verdiniz, navigasyonun ömrü boyunca takip eden tüm view kontrolörlerini takip etmiyor ... ki bu çoğu araç çubuğunun yapamayacağı şey. – Jann