SORU
27 AĞUSTOS 2009, PERŞEMBE


UİView gelen UİViewController?

Bir yerleşik şekilde UIViewController UIView Bir almak için var mı? Eğer ters bir başvuru var UIView [self view]) ama merak ettim, onun için UIViewController biliyor musunuz?

CEVAP
17 EYLÜL 2010, Cuma


Örnek Brock tarafından gönderildi kullanarak, çok UİView bir kategori yerine kendi UİViewController olduğunu ve herhangi bir küme (umarım) üst UİViewController seçileceğini özyinelemeli yapılan değişiklik yaptım.

@interface UIView (FindUIViewController)
- (UIViewController *) firstAvailableUIViewController;
- (id) traverseResponderChainForUIViewController;
@end

@implementation UIView (FindUIViewController)
- (UIViewController *) firstAvailableUIViewController {
    // convenience function for casting and to "mask" the recursive function
    return (UIViewController *)[self traverseResponderChainForUIViewController];
}

- (id) traverseResponderChainForUIViewController {
    id nextResponder = [self nextResponder];
    if ([nextResponder isKindOfClass:[UIViewController class]]) {
        return nextResponder;
    } else if ([nextResponder isKindOfClass:[UIView class]]) {
        return [nextResponder traverseResponderChainForUIViewController];
    } else {
        return nil;
    }
}
@end

Kullanın bu kodu ekleyin içine yeni bir sınıf dosyası (ismini verdim benim "UİKitCategories") ve kaldırmak sınıfı veri... kopyala @arayüzüne başlık ve @uygulanması .m dosya. Sonra projenizde, #"UİKitCategories.ithalat h" ve UİView kodu içinde kullanımı:

// from a UIView subclass... returns nil if UIViewController not available
UIViewController * myController = [self firstAvailableUIViewController];

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DanceOn

    DanceOn

    6 Mayıs 2006
  • Maya Learning Channel

    Maya Learnin

    23 HAZİRAN 2010
  • SignatureSeries

    SignatureSer

    24 Aralık 2006