从iOS中的App Delegate调用当前视图控制器中的方法

yup*_*yup 37 iphone objective-c ios

我有两个视图控制器(BuildingsViewController和RoomsViewController),它们都使用名为upload的App Delegate中的一个函数.upload函数基本上执行HTTP请求,如果成功或不成功,则触发uialertview.这工作正常.

我正在努力的部分来自app delegate的connectionDidFinishLoading方法.我需要能够通过viewWillAppear该视图控制器的方法基本上刷新当前视图控制器.在viewWillAppear每个视图控制器的功能内部,我有代码,用于确定底部工具栏上的按钮.

我希望通过app delegate完成上传时,每个视图控制器工具栏中的"上传"按钮会自动删除.

我试过在app委托[viewController viewWillAppear:YES]connectionDidFinishLoading方法中做,但它永远不会被调用.

我希望我足够清楚.任何帮助是极大的赞赏.

谢谢.

Cyp*_*ian 86

viewWillAppear如果已经显示视图,则不要调用视图的刷新.你想要做的是以下内容:

ConnectionDidFinishLoading通知后触发方法时

[[NSNotificationCenter defaultCenter] postNotificationName:@"refreshView" object:nil];
Run Code Online (Sandbox Code Playgroud)

在您viewController观察此通知时.您可以通过将此代码添加到init或viewDidLoad方法来实现

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(refreshView:) name:@"refreshView" object:nil];
Run Code Online (Sandbox Code Playgroud)

现在实现-(void)refreshView:(NSNotification *) notification方法,viewController根据自己的喜好管理视图.