Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 让通知生效?_Iphone_Ios_Objective C_Uiwebview_Nsnotifications - Fatal编程技术网

Iphone 让通知生效?

Iphone 让通知生效?,iphone,ios,objective-c,uiwebview,nsnotifications,Iphone,Ios,Objective C,Uiwebview,Nsnotifications,我目前正试图让NSNotification开始工作,但遇到了一些问题 我有两(2)个视图控制器:A.主视图控制器和B.登录视图控制器 在我的MainViewController中,我有一个注销按钮,该按钮将向我的loginView控制器发送url以加载它(不显示我的loginView)。但是,它不起作用 在我的MainViewController中,这是我拥有的: - (IBAction)logout:(id)sender { NSURL *logoutURL = [NSURL URLWith

我目前正试图让NSNotification开始工作,但遇到了一些问题

我有两(2)个视图控制器:A.主视图控制器和B.登录视图控制器

在我的MainViewController中,我有一个注销按钮,该按钮将向我的loginView控制器发送url以加载它(不显示我的loginView)。但是,它不起作用

在我的MainViewController中,这是我拥有的:

- (IBAction)logout:(id)sender {

NSURL *logoutURL = [NSURL URLWithString:@"https://myurl.com/logout"];

[[NSNotificationCenter defaultCenter] postNotificationName:@"logoutInitiated" object:logoutURL];


}
这是我的LoginView控制器中的内容:

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    WebView.delegate = self;
    WebView.scalesPageToFit = YES;
    WebView.multipleTouchEnabled = YES;
    loadCount = 0;

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(submitLogout) name:@"logoutInitiated" object:nil];

}

- (IBAction)submitLogout:(NSNotification*)notification {


   [WebView stopLoading];

    NSURL * signOutUrl = (NSURL*)[notification object];
    [self loadURL:nil withURL:signOutUrl];
}

我的问题是,当我按下注销按钮时,什么也没有发生。(使用NSLogs,我发现它不会触发下一步)谢谢

添加self作为观察者时,使用选择器“submitLogout”,不带分号!但是您的方法有一个参数,因此正确的选择器应该是
@selector(submitLogout:)

这是因为您在选择器中传递的方法名称是错误的。您需要在
submitLogout:
后缀中添加冒号: 使用

代替

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(submitLogout) name:@"logoutInitiated" object:nil];

希望它能帮助您。

注意分号

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(**submitLogout:**) name:@"logoutInitiated" object:nil];    

- (IBAction)logout:(id)sender 
{
        NSURL *logoutURL = [NSURL URLWithString:@"https://myurl.com/logout"];    
        [[NSNotificationCenter defaultCenter] postNotificationName:@"logoutInitiated" object:nil       userInfo:[NSDictionary dictionaryWithObjectsAndKeys:logoutURL,@"RECEIVED_URL", nil]];
}

- (IBAction)submitLogout:(NSNotification*)notification 
{       
    [WebView stopLoading];
     NSURL * signOutUrl = (NSURL*)[notification objectForKey:@"RECEIVED_URL"];
    [self loadURL:nil withURL:signOutUrl];
}

哇,我应该休息一下了!我真不敢相信我没听懂!非常感谢你!!!
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(**submitLogout:**) name:@"logoutInitiated" object:nil];    

- (IBAction)logout:(id)sender 
{
        NSURL *logoutURL = [NSURL URLWithString:@"https://myurl.com/logout"];    
        [[NSNotificationCenter defaultCenter] postNotificationName:@"logoutInitiated" object:nil       userInfo:[NSDictionary dictionaryWithObjectsAndKeys:logoutURL,@"RECEIVED_URL", nil]];
}

- (IBAction)submitLogout:(NSNotification*)notification 
{       
    [WebView stopLoading];
     NSURL * signOutUrl = (NSURL*)[notification objectForKey:@"RECEIVED_URL"];
    [self loadURL:nil withURL:signOutUrl];
}