1

我試圖用一些自定義方法擴展標準UIViewControllerUIViewController擴展

#import <UIKit/UIKit.h> 

@interface UIViewController (UIViewControllerExtension) 
- (void) showNoHandlerAlertWithTitle:(NSString *)title andMessage:  (NSString*)message; 
- (void) showAlertWithTitle:(NSString *)title andMessage:(NSString*)message buttonTitles:(NSArray<NSString *>*)titles andHandler:(void (^)(UIAlertAction * action))handler; 
@end 

如何現在可以使用擴展UIViewController?我需要從擴展UIViewController繼承我的自定義視圖控制器。

+2

把你的代碼放在這裏不是圖像的代碼 –

+0

這是一個類,對吧?然後,只需在UIViewController子類對象上導入.h文件。 – Larme

+0

將.h文件導入到我的自定義視圖控制器不起作用。擴展方法不可用。 – user267140

回答

1

創建一個包含文件 「的UIViewController + Alert.h」:

#import <UIKit/UIKit.h> 
@interface UIViewController (AlertExtension) 
- (void) showNoHandlerAlertWithTitle:(NSString *)title andMessage:  (NSString*)message; 
- (void) showAlertWithTitle:(NSString *)title andMessage:(NSString*)message buttonTitles:(NSArray<NSString *>*)titles andHandler:(void (^)(UIAlertAction * action))handler; 
@end 

然後,創建一個文件,其中包含 「的UIViewController + Alert.m」:

#import "UIViewController+Alert.h" 
@implementation UIViewController (AlertExtension) 
- (void) showNoHandlerAlertWithTitle:(NSString *)title andMessage:  (NSString*)message { 
    // Insert code here 
} 

- (void) showAlertWithTitle:(NSString *)title andMessage:(NSString*)message buttonTitles:(NSArray<NSString *>*)titles andHandler:(void (^)(UIAlertAction * action))handler { 
    // Insert code here 
} 
@end 

在說你的「SampleViewController .H「:

#import <UIKit/UIKit.h> 
#import "UIViewController+Alert.h" 

@interface SampleViewController : UIViewController 
@end 

然後在 」SampleViewController.m「:

#import "SampleViewController.h" 
@implementation SampleViewController 
- (void)viewDidLoad { 
    [super viewDidLoad]; 
    [self showNoHandlerAlertWithTitle:@"Hello" andMessage:@"World"]; 
} 
@end 

享受!

+1

在實現中導入'UIViewController + Alert.h'就足夠了,否則你會污染你的頭文件。 '@import UIKit;'現在應該優先於'#import '。 – Sulthan

+0

沒有更多關於哪個版本的Xcode以及在其構建設置中是否將「啓用模塊」設置爲YES的更多上下文,請使用@import UIKit;實際上可能導致他的代碼不能編譯;我更喜歡謹慎的繼承人,並重新使用問題中使用的類似語法。話雖如此,除非您的代碼的其他部分能夠在您的視圖控制器上使用這些功能,否則您完全可以在實現中導入UIViewController + Alert.h! – ekscrypto

相關問題