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

  • CNET

    CNET

    5 Mayıs 2006
  • emimusic

    emimusic

    10 Mart 2006
  • The Verge

    The Verge

    8 AĞUSTOS 2006