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

  • Best Quality Cartoons

    Best Quality

    10 ŞUBAT 2014
  • Chuck Testa

    Chuck Testa

    14 AĞUSTOS 2011
  • Cristina Landa

    Cristina Lan

    28 Ocak 2010