Ios 在另一个类Xcode中使用self.navigationController.view

Ios 在另一个类Xcode中使用self.navigationController.view,ios,objective-c,Ios,Objective C,我目前正在我的项目中使用MRProgress。在此之前,我已经将这两个库放在我项目的每个文件中。当时,MRProgress工作正常,并在该项目中正确显示。现在,我正在创建一个公共类,并将所有函数都放入该类中,以使其可重用并像这样优化我的项目 common.m - (void) myFuntion:(UIViewController *)myvc { [MRProgressOverlayView showOverlayAddedTo:myvc.navigationController.vi

我目前正在我的项目中使用MRProgress。在此之前,我已经将这两个库放在我项目的每个文件中。当时,MRProgress工作正常,并在该项目中正确显示。现在,我正在创建一个公共类,并将所有函数都放入该类中,以使其可重用并像这样优化我的项目

common.m

- (void) myFuntion:(UIViewController *)myvc {
    [MRProgressOverlayView showOverlayAddedTo:myvc.navigationController.view animated:YES];
    ..
    ..
    ..
    ..
    [MRProgressOverlayView dismissOverlayForView:myvc.navigationController.view animated:YES];
}
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"stb" bundle:nil];
ViewController *searchVC = [storyboard instantiateViewControllerWithIdentifier:@"ViewController"];
[common myFuntion:searchVC];
myusage.m

- (void) myFuntion:(UIViewController *)myvc {
    [MRProgressOverlayView showOverlayAddedTo:myvc.navigationController.view animated:YES];
    ..
    ..
    ..
    ..
    [MRProgressOverlayView dismissOverlayForView:myvc.navigationController.view animated:YES];
}
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"stb" bundle:nil];
ViewController *searchVC = [storyboard instantiateViewControllerWithIdentifier:@"ViewController"];
[common myFuntion:searchVC];

当时,我的问题是,MRProgress无法再显示了。请让我知道我做错了什么。

首先,验证ViewController是否嵌入到导航控制器中

您可以放置断点,然后在控制台中放置“po searchVC.navigationController”


顺便说一句,我不知道你是否做错了,但是在navigationController上添加MRProgress,然后用“self.view”将其忽略是没有意义的。您应该取消添加覆盖的同一视图,在您的示例中,它应该是:myvc.navigationController.view

从上面的共享代码中,看起来您已经声明了实例级方法:

- (void) myFuntion:(UIViewController *)myvc
如果您像调用类级方法一样调用它,请尝试用以下方法替换上面的原型

+ (void) myFuntion:(UIViewController *)mivc  
实际上,用“-”声明的方法被视为实例级,而用“+”声明的函数则是类级。
参考资料:

在按下视图后使用此方法,如:

SceondViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"SceondViewController"];
[self.navigationController pushViewController:controller animated:YES];
[self myFuntion:controller];

希望它对您有用。

对不起,这是myvc.navigationController。您是否检查了视图控制器是否嵌入到导航控制器中?下面是一个屏幕截图,显示了它在故事板中的外观:如果无法嵌入导航控制器,则应将覆盖添加到myvc.view,而不是myvc.navigationController.view