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

  • CodingMadeEasy

    CodingMadeEa

    25 EYLÜL 2010
  • ethr95awd

    ethr95awd

    8 Kasım 2006
  • Tek Syndicate

    Tek Syndicat

    23 Temmuz 2008