目标C-视图控制器中的调用方法,该方法已位于应用程序委托的导航顶部

时间:2018-12-19 06:28:34

标签: ios objective-c uialertview

说我必须在收到无声推送通知后从App Delegate调用View Controller中的方法(这是顶部显示给用户的方法)。反过来,所谓的方法必须显示警报,并且在客户单击警报视图按钮后,必须弹出视图控制器。

我的问题是单击按钮后clickedButtonAtIndex方法没有被触发。是什么原因呢?

AppDelegate.m

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
{
    TestViewController *test = [[TestViewController alloc] init];
    [test showAlert];
}

TestViewController.h

@interface TestViewController : BaseViewController<UIAlertViewDelegate>

TestViewController.m

-(void)showAlert {

    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Message" message:@"Show Message" delegate:self cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
    alert.tag = 100;
    [alert show];
}

1 个答案:

答案 0 :(得分:0)

您必须访问现有的顶视图控制器实例,而不是在执行操作时实例化一个新的实例。 这样做的方法取决于应用程序界面的定义方式:例如,如果您使用的是导航控制器,则必须访问其viewControllers数组的顶部。