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ÅŸ:

İPhone'da bir UİViewController vs bir ...
NSDictionary gelen JSON dize oluÅŸturma...
Alma C dosya tanımlayıcısı gelen Dosya...
AngularJS : izole kapsamında olmayan b...
Geçerli Python kodu bir yöntem gelen ç...