如何在ios中解除viewcontroller?

时间:2015-06-29 06:14:58

标签: ios objective-c

我创建了一个库,如果主应用程序调用我的库显示它,并从服务器下载一些数据。但是如果服务器有一些错误我想杀死库视图,但它不起作用 我在主机应用程序中有一个代表:

-(void)libraryResult:(NSString*)result{
NSLog(@"result: %@", result);
}

我在viewWillAppear方法中从服务器下载数据,下载的代理方法如下:

-(void)networkManagerError:(NSString *)error{
[hud hide:YES];
[self.presentedViewController dismissViewControllerAnimated:YES completion:nil];
[self.delegate libraryResult:error];
}

我在日志中看到该应用返回主应用,但视图无法更改。 怎么解决这个?我的代码怎么了?

4 个答案:

答案 0 :(得分:2)

更改此行

[self.presentedViewController dismissViewControllerAnimated:YES completion:nil];

[self dismissViewControllerAnimated:YES completion:nil];

答案 1 :(得分:0)

尝试这些..

[self dismissViewControllerAnimated:YES completion:nil];

答案 2 :(得分:0)

如果你有VC1提供VC2,那么在相应事件的VC2内(比如点击关闭按钮,或服务器等错误),你应该打电话:

[self.presentingViewController dismissViewControllerAnimated:YES completion:^{

    }]

如果以这样的方式设置事物以便VC1通知VC2内发生的事件,您可以使用:

[self dismissViewControllerAnimated:YES completion:nil];

然而,第一种方法是更优选的,因为它是一种更好的设计实践,并且有助于VC1和VC2之间更松散的耦合。

答案 3 :(得分:0)

尝试从您的"库结果中发出通知"如果发生错误,则将方法添加到当前控制器视图中。

[[NSNotificationCenter defaultCenter] postNotificationName:Remove_CurrentView object:nil];

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(remove) name:Remove_CurrentView object:nil];

-(void)remove{
    [self dismissViewControllerAnimated:YES completion:nil];
}