SORU
3 EYLÜL 2009, PERŞEMBE


Bir görünüm verilmiş, nasıl viewController alabilirim?

UIView bir işaretçi var. Nasıl UIViewController erişebilirim? [self superview] UIView ama ** 7, doğru değil mi?

CEVAP
5 Temmuz 2014, CUMARTESİ


nextResponder UIResponder belgelere

UİResponder sınıf ya da bir sonraki yanıtlayıcı otomatik olarak, yerine varsayılan olarak nil dönen değer vermez. Alt sınıflar bu yöntem bir sonraki yanıtlayıcı ayarlamak için geçersiz kılmak gerekir.UİView eğer (eğer varsa) veya superview yoksa değil mi () yöneten UİViewController nesneyi döndürerek bu yöntemi uygular; UİViewController kendi bakış superview döndürerek yöntemi uygular; UİWindow verir uygulama nesne ve UİApplication verir nil.

Eğer tip kadar bir görünüm nextResponder seni recurse eğer UIViewController herhangi bir görünümde üst viewController.

Yine de unutmayındeğilüst görünüm denetleyicisi var. Ama eğer görünümü bir viewController bakışı görünüm hiyerarşisi parçası varsa.

Swift uzantısı:

extension UIView {
    var parentViewController: UIViewController? {
        var parentResponder: UIResponder? = self
        while parentResponder != nil {
            parentResponder = parentResponder!.nextResponder()
            if let viewController = parentResponder as? UIViewController {
                return viewController
            }
        }
        return nil
    }
}

Objective-C kategori:

@interface UIView (mxcl)
- (UIViewController *)parentViewController;
@end

@implementation UIView (mxcl)
- (UIViewController *)parentViewController {
    UIResponder *responder = self;
    while ([responder isKindOfClass:[UIView class]])
        responder = [responder nextResponder];
    return responder;
}
@end

Bu makro kategorisi kirliliği önler:

#define UIViewParentController(__view) ({ \
    UIResponder *__responder = __view; \
    while ([__responder isKindOfClass:[UIView class]]) \
        __responder = [__responder nextResponder]; \
    (UIViewController *)__responder; \
})

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BigDawsTv

    BigDawsTv

    20 HAZİRAN 2012
  • Slave Boy Films - Fandom from a Galaxy Far Far Away

    Slave Boy Fi

    12 HAZİRAN 2009
  • williamfitzsimmons

    williamfitzs

    14 Mart 2008