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

  • curioustravelers

    curioustrave

    12 AĞUSTOS 2006
  • FullMag

    FullMag

    15 ŞUBAT 2007
  • iZAPPA

    iZAPPA

    16 Temmuz 2010