当应用程序进入前台时如何呈现模态视图控制器?

时间:2011-12-09 22:05:39

标签: iphone objective-c ios methods presentmodalviewcontroller

我正在尝试在应用程序进入前台时呈现模态视图控制器..这些是我的文件: AppDelegate.m:

#import "AppDelegate.h"
#import "MainViewController.h"    
- (void)applicationWillEnterForeground:(UIApplication *)application
    {
        [self.window makeKeyAndVisible];
        MainViewController * vc = [[MainViewController alloc]init];
        [vc myMethodHere];       
    }

MainViewController.h:

//[..]
-(void) myMethodHere;

MainViewController.m:

-(void)myMethodHere{
    NSLog(@"myMethodHere Activated.");
    TWTweetComposeViewController *tweetViewController = [[TWTweetComposeViewController alloc] init];
    [self presentModalViewController:tweetViewController animated:YES];
}

NSLog(@“myMethodHere Activated。”)工作..所以我无法理解为什么“presentModalViewController”没有!我应该编辑/添加什么?也许是延迟?谢谢你的帮助......

P.S。我知道我的英语太糟糕了。原谅我:)。

1 个答案:

答案 0 :(得分:4)

我不会依赖你的app委托中的方法(即使它看起来像是显而易见的解决方案),因为它会在你的应用程序委托和视图控制器之间产生不必要的耦合。相反,您可以让MainViewController收听UIApplicationDidBecomeActive通知,并提供推文作曲家视图控制器以响应此通知。

首先,在-viewDidLoad注册通知。

- (void)viewDidLoad
{
    [super viewDidLoad];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(myMethodHere) name:UIApplicationDidBecomeActiveNotification object:nil];
}

现在,当您的应用从后台返回时收到此通知,系统会调用myMethodHere

最后,请记得在视图卸载时将自己移除为观察者。

- (void)viewDidUnload
{
    [super viewDidUnload];
    [[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidBecomeActiveNotification object:nil];
}