2013-11-04 27 views
5

iPhone Simulator veya Aygıttaki Yatay modundaki Portre modunda, tüm gezinti çubuğu düğmelerini gösterir, ancak Aygıttaki Portre modunda kullanıldığında, düğme görüntülenen. Gezinme çubuklarının görüntüleri aşağıdadır. iPhone gezinti çubuğu, aygıttaki tüm düğmeleri göstermiyor

Simulator shows button

Device doesn't show button

test etmek için olan aygıt

IOS 6.1.3 (10B329) çalıştıran bir iPhone 4S. Kullandığım simülatör, iOS 6.0/6.1 çalıştıran Sürüm 7.0 (463.9.4) 'dir.

Düzenleme modundayken Ara düğmesini kaldırmayı düşünmekteyim, ancak bu seçeneği moddan bağımsız olarak kullanıcının kullanımına açık tutmayı tercih ediyorum.

Herhangi bir yardım veya içgörü minnettar, teşekkürler.

Düzenleme: başlangıçta oluşturulan ve şöyle viewController için viewDidLoad: eklenir sağ düğmeleri:

_deleteBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemTrash target:self action:@selector(deleteRows:)]; 
_deleteBarButtonItem.tintColor = [UIColor redColor]; 

_searchBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSearch target:self action:@selector(searchButtonClicked:)]; 

self.navigationItem.rightBarButtonItems = @[_searchBarButtonItem, self.editButtonItem]; 

Ve düzenleme moduna girerken:

- (void)setEditing:(BOOL)editing animated:(BOOL)animated 
{ 
    [super setEditing:editing animated:animated]; 

    if (self.tableView.isEditing) { 
     // turn off editing 
     _deleteBarButtonItem.enabled = NO; 
     [self.tableView setEditing:NO animated:animated]; 
     [self.editButtonItem setStyle:UIBarButtonItemStylePlain]; 
     self.navigationItem.rightBarButtonItems = @[_searchBarButtonItem, self.editButtonItem]; 
    } else { 
     // turn on editing 
     [self.tableView setEditing:YES animated:animated]; 
     [self.editButtonItem setStyle:UIBarButtonItemStyleDone]; 
     self.navigationItem.rightBarButtonItems = @[_searchBarButtonItem, _deleteBarButtonItem, self.editButtonItem]; 
    } 
} 
+0

Düğmeler çubuğa nasıl eklenir? – nhgrif

+0

Yukarıdaki düzenlememi kontrol et. – DemonGyro

cevap

0

Ben kaybolan düğmesi için uygun bir çözüm bulamadığı için Portre modunda özellikle iPhone'lar için "daha az seçenek" seçeneği ile gitti ve orada gerçekten degildim (doğal olarak, sizin değişken adları büyük olasılıkla farklılık) t yeterli alan. Manzara ve iPad'de, üçüncü düğmenin, _searchBarButtonItem gösterilecek alanı vardır, bu nedenle görüntülenir.

İstenen davranışları elde etmek için yaptığım değişiklikler aşağıdadır. Umarım bazı insanlar bunu faydalı bulabilir.

-(void) viewDidLoad { 
    ... 
    self.navigationItem.rightBarButtonItems = @[_searchBarButtonItem, self.editButtonItem]; 
} 

- (void) viewWillAppear:(BOOL)animated 
{  
    [super viewWillAppear:animated]; 

    if (self.playerTableView.isEditing && !IS_IPAD) 
    { 
     if (UIInterfaceOrientationIsPortrait([[UIApplication sharedApplication] statusBarOrientation])) 
     { 
      self.navigationItem.rightBarButtonItems = @[_deleteBarButtonItem, self.editButtonItem]; 
     } 
     else 
     { 
      self.navigationItem.rightBarButtonItems = @[_searchBarButtonItem, _deleteBarButtonItem, self.editButtonItem]; 
     } 
    } 
} 

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration 
{ 
    [super willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration]; 

    if (self.playerTableView.isEditing && !IS_IPAD) 
    { 
     if (UIInterfaceOrientationIsPortrait(toInterfaceOrientation)) 
     { 
      self.navigationItem.rightBarButtonItems = @[_deleteBarButtonItem, self.editButtonItem]; 
     } 
     else 
     { 
      self.navigationItem.rightBarButtonItems = @[_searchBarButtonItem, _deleteBarButtonItem, self.editButtonItem]; 
     } 
    } 
} 

- (void)setEditing:(BOOL)editing animated:(BOOL)animated 
{ 
    [super setEditing:editing animated:animated]; 
    ...  
    if (self.playerTableView.isEditing) { 
     ... 
     self.navigationItem.rightBarButtonItems = @[_filterBarButtonItem, self.editButtonItem]; 
    } else { 
     ... 
     if (!IS_IPAD && UIInterfaceOrientationIsPortrait([[UIApplication sharedApplication] statusBarOrientation])) 
     { 
      self.navigationItem.rightBarButtonItems = @[_deleteBarButtonItem, self.editButtonItem]; 
     } 
     else 
     { 
      self.navigationItem.rightBarButtonItems = @[_searchBarButtonItem, _deleteBarButtonItem, self.editButtonItem]; 
     } 
    } 
} 
1

Dürüst, meraklı bu. Belki de baskın kılan başlığın bir özelliği. Benim deneyimimde, "düzenleme modu" sırasında daha az seçeneğe sahip olmak her zaman en iyisidir. O rotaya gitmeye karar verirseniz, yardımcı olabilecek küçük bir kod burada. '

// Get the reference to the current toolbar buttons 
NSMutableArray *toolbarButtons = [self.toolbarItems mutableCopy]; 

if (editing) { 
    // This is how you remove the button from the toolbar and animate it 
    [toolbarButtons removeObject:self.myButton]; 
    [self setToolbarItems:toolbarButtons animated:YES]; 
} else { 
    // This is how you add the button to the toolbar and animate it 
    if (![toolbarButtons containsObject:self.myButton]) { 
     // The following line adds the object to the end of the array. 
     // If you want to add the button somewhere else, use the `insertObject:atIndex:` 
     // method instead of the `addObject` method. 
     [toolbarButtons addObject:self.myButton]; 
     [self setToolbarItems:toolbarButtons animated:YES]; 
    } 
} 
+0

Dikey modda özellikle iPhone'lar için "daha az seçenek" seçeneğiyle gittim çünkü kaybolan düğme için uygun bir çözüm bulamadım. Yorum için teşekkürler. – DemonGyro

İlgili konular