[英]Call ViewController method from App Delegate
我的ViewController中有一個方法可以根據存在的引腳打開不同的視圖,將其分配給初始視圖上的按鈕時可以使用,我也可以將其放在viewDidLoad方法中,但是我正在使用情節提要,並且此方法的viewDidLoad會觸發每個視圖都是從模態選擇中加載的,所以我希望從我的appDelegate didFinishLaunchingWithOptions中調用該方法。 從本質上講,它是基於存儲的pin值在應用啟動時的視圖重定向。
我已經在應用程序委托#import "ViewController.h"
導入了視圖控制器,然后在didFinishLaunchingWithOptions中使用了當前代碼:
ViewController *rootViewController = (ViewController*)self.window.rootViewController;
[rootViewController initView];
我這樣做但是出現錯誤
'ViewController'的可見接口沒有聲明選擇器'initView'?
這是我完整的ViewController.h
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController {
IBOutlet UITextField *emailField;
IBOutlet UITextField *passwordField;
IBOutlet UITextField *pinField;
IBOutlet UITextField *checkPin;
}
@property (nonatomic, strong) IBOutlet UIWebView *webView;
@property (strong, nonatomic) IBOutlet UIBarButtonItem *ShowEmailList;
-(IBAction)showList:(id)sender;
-(IBAction)checkPin:(id)sender;
-(IBAction)initView:(id)sender;
@end
在我的ViewController.m文件中,方法是:
-(IBAction)initView:(id)sender {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *getPin = [defaults objectForKey:@"Pin"];
if ([getPin isEqualToString:@""]){
//do something
}else{
//do something else
}
}
關於如何在ViewController.h文件中正確聲明我的initView方法以糾正此錯誤的任何想法? 謝謝
您需要向該方法添加一個參數,例如:
[rootViewController initView:nil];
您的-(IBAction)initView:(id)sender
需要一個參數。
您有兩種方法可以解決此問題。
將方法簽名修改為-(IBAction)initView { //source code. }
-(IBAction)initView { //source code. }
從調用者方法傳遞nil或AppDelegate
[rootViewController initView:nil];
或[rootViewController initView:self];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.