SORU
27 Kasım 2011, Pazar


Nasıl bir film Şeridi Popover Kapatmak için

UIBarButtonItem Bu gibi böyle büyük mükafat Şeritleri kod yok yani () kullanarak bir popover oluşturduk:

Xcode 5.0 Connections Inspector with Popover

Bu popover zararlı gayet güzel çalışıyor. Ancak, popover ulaşamıyorumyokben UIBarButtonItem dokunun ne zaman görünür olmasını sağladı.

Düğme (ilk kez) basıldığında popover görünür. Düğmeye tekrar (ikinci kez) basıldığında aynı popover üstünde görünür, şimdi iki yumurtalı ekmek (ya da ben continuer butonuna basarak daha fazla) var. iOS Human Interface Guidelines göre popover ikinci ilk dokunun ve kaybolur görünür yapmak istiyorum:

Sadece bir popover görünür bir zamanda ekranda olduğundan emin olun. Aynı anda birden fazla popover (veya özel görünüm bakmak ve bir popover gibi davranmak için tasarlanmış) sergilemek gerekir. Özellikle, bir çağlayan veya bir popover başka bir çıkar çörek aynı anda, hiyerarşi görüntüleme kaçınmalısınız.

Nasıl bir kullanıcı için UIBarButtonItem musluklar popover görevden alabilir miyim?

CEVAP
20 NİSAN 2012, Cuma


DÜZENLEME:Bu sorunlar iOS 7.1 / Güncellemelerinden 5.1.1 sabit gibi görünür. (Muhtemelen daha önceki tüm sürümleri test etmek mümkün olmamıştır. İOS 7.0, beri sonra kesinlikle bir test ettim.) * *4, segue bir popover bir geçiş oluşturduğunuzda tekrar popover dokunarak bir yinelenen göstermek yerine popover gizler emin olur. Böyle büyük mükafat 6 iOS 8 de oluşturan sağ UIPresentationControllertabanlı yeni popover bu geçişlerini için çalışıyor.

Benim çözüm bu hala önceki iOS sürümlerini desteklemek için tarihsel ilgi çekici olabilir bu yana, aşağıda bıraktım.


Eğer sakladığınız bir başvuru için geçiş popover denetleyicisi, başından önce ayarı için yeni bir değer tekrar çağırmaları prepareForSegue:sender: tüm önlemek sorun elde birden fazla istifleme çörek tekrarlanan Pres düğme ... hala ... düğmesini kapatmak için bu popover olarak HİG önerir (ve görüldüğü gibi Apple'ın uygulamaları, vb.)

ARC basit bir çözüm için zayıf başvurular sıfırlama avantajı olsa da alabilir:

1: düğmesinden Geçiş

İOS 5, bu işe iOS ama. UIBarButtonItem, Bir gelen bir geçiş ile gelemeyeceğini 6 ve üstü gibi. (Görünümü denetleyicisi kendisini buluyor gerekecek 5, iOS, düğme eylem popover için kontrol ettikten sonra performSegueWithIdentifier: arasın o zaman.)

2: Kullanın. -shouldPerformSegue... popover için bir referans

@interface ViewController
@property (weak) UIPopoverController *myPopover;
@end

@implementation ViewController
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    // if you have multiple segues, check segue.identifier
    self.myPopover = [(UIStoryboardPopoverSegue *)segue popoverController];
}
- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender {
    if (self.myPopover) {
        [self.myPopover dismissPopoverAnimated:YES];
        return NO;
    } else {
        return YES;
    }
}
@end

3: üç! adım yok

Güzel bir şey kullanma hakkında bir sıfırlama zayıf referans burada olduğunu bir kez popover denetleyicisi görevden acaba programlı shouldPerformSegueWithIdentifier: ya da otomatik olarak kullanıcı tarafından dokunarak başka bir yerde dış popover-ıvar gider nil tekrar geri döndük bizim ilk durum.

Zayıf başvuru sıfırlama olmadan da olurdu:

  • shouldPerformSegueWithIdentifier: işten çıkarma myPopover = nil set ve
  • popoverControllerDidDismissPopover: yakalamak ve aynı zamanda myPopover = nil orada popover otomatik olarak atlamamış yakalarız () ayarlamak için popover kumandanın temsilci olarak kendimizi ayarlamak.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Liz Morgan

    Liz Morgan

    4 Aralık 2011
  • Machinima

    Machinima

    17 Ocak 2006
  • Vagrant Records

    Vagrant Reco

    8 Mayıs 2006