亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從UIView到UIViewController?

從UIView到UIViewController?

iOS
30秒到達戰場 2019-07-15 09:46:21
從UIView到UIViewController?是否有一個內置的方法可以從UIView向其UIViewController?我知道你可以從UIViewController向其UIView通孔[self view]但我想知道是否有反向引用?
查看完整描述

3 回答

?
繁星淼淼

TA貢獻1775條經驗 獲得超11個贊

使用BRock發布的示例,我對其進行了修改,使其成為UIView的一個類別,而不是UIViewController,并使其具有遞歸性,以便任何子視圖都能夠(希望)找到父UIViewController。

@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

若要使用此代碼,請將其添加到一個新的類文件中(我將其命名為“UIKitCollection”)并刪除類數據.將@接口復制到頭中,將@實現復制到.m文件中。然后在您的項目中,#導入“UIKitCluories.h”并在UIView代碼中使用:

// from a UIView subclass... returns nil if UIViewController not available
UIViewController * myController = [self firstAvailableUIViewController];


查看完整回答
反對 回復 2019-07-15
?
隔江千里

TA貢獻1906條經驗 獲得超10個贊

UIViewUIResponderUIResponder布置方法-nextResponder的實現返回nilUIView重寫此方法,如UIResponder(出于某種原因,而不是在UIView)如下所示:如果視圖具有視圖控制器,則由-nextResponder..如果沒有視圖控制器,該方法將返回SuperView。

將這個添加到您的項目中,您就可以滾動了。

@interface UIView (APIFix)- (UIViewController *)viewController;@end@implementation UIView (APIFix)- (UIViewController *)viewController {
    if ([self.nextResponder isKindOfClass:UIViewController.class])
        return (UIViewController *)self.nextResponder;
    else
        return nil;}@end

現在UIView具有返回視圖控制器的工作方法。


查看完整回答
反對 回復 2019-07-15
  • 3 回答
  • 0 關注
  • 431 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號