下面的代码确实可以工作,但它仍然让我感到沮丧,因为在else
块中,不推荐的方法调用会导致警告。
if ([self.navigationController respondsToSelector:@selector(dismissViewControllerAnimated:completion:)])
{
[self.navigationController dismissViewControllerAnimated:YES completion:nil];
}
else
{
//Here,the warning goes!
//dismissModalViewControllerAnimated is deprecated
[self.navigationController dismissModalViewControllerAnimated:YES];
}
如何隐藏已解散的警告,或者是否有其他方法可以解决这个问题?
您可以暂时禁用有关代码行周围的弃用警告:
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
[self.navigationController dismissModalViewControllerAnimated:YES];
#pragma clang diagnostic pop
我看不出有任何理由同时保留遣散viewcontrolleranimated &dismissModalViewControllerAnimated。你正在收到dismissModalViewControllerAnimated的警告,因为你的项目的部署目标是6.0,dismissModalViewControllerAnimated在iOS 6 SDK中已弃用。
- 如果你想让你的应用支持6.0以下的iOS,将部署目标更改为6.0以下(例如:5.0),只使用dismissModalViewControllerAnimated来解散模态。
- 如果你想让你的应用支持iOS 6.0+,那么保持部署目标为6.0,并且只使用遣散呈现的控制器的遣散viewcontrolleranimated