我的ViewController中有一个方法可以根据存在的引脚打开不同的视图,它在分配给初始视图中的按钮时有效,我也可以将它放在viewDidLoad方法中但是我使用的是storyboard和这个方法viewDidLoad从模态segues中触发每个视图加载,所以我想从我的appDelegate didFinishLaunchingWithOptions调用该方法。 它基本上是基于存储的引脚值存在的应用程序启动时的视图重定向。
我在app delegate #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方法以纠正此错误的任何想法? 感谢
答案 0 :(得分:1)
您需要为此方法添加一个参数,如:
[rootViewController initView:nil];
答案 1 :(得分:1)
您的-(IBAction)initView:(id)sender
期待参数。
您有两种方法可以解决此问题。
将您的方法签名修改为-(IBAction)initView { //source code. }
传递nil或来自调用者方法的AppDelegate
[rootViewController initView:nil];
或[rootViewController initView:self];