3

私はXcode 4.3.2で作業しています

Local Notificationsあらかじめ決められた時間に新しいイベントをユーザーに警告するように実装しました。したがって、アプリがバックグラウンドにあり、時計が午前 8 時 (たとえば) を打つと、ユーザーはアプリから通知を受け取ります。

ユーザーがバックグラウンドからアプリを表示することにした場合、私は nib を読み込みます。現在、このペン先は適切に機能します。ペン先に配置されたとおりのビューが表示されます。ただし、ペン先がユーザーに表示された後、ユーザーを別のビューに転送したいと考えていますLocalNotificationsHandler.m。2 番目のビューをプッシュしようとすると、アプリが失敗します。そのため、エラー メッセージは表示されませんが、2 番目の nib が読み込まれないようです。

要するに、流れは次のようになります。

  • アプリがバックグラウンドで実行されているときにユーザーが通知を受け取る
  • ユーザーはアプリを表示することを選択します
  • LocalNotificationsHandler nibロードします
  • self.navigationController == nil(LocalNotificationsHandler.m 内)
  • self.navigationController は、新しいビューを取得するために "[pushViewController: "new view" animation:YES]" を行いません

AppDelegate.m ファイルに欠けているものがあるかどうか疑問に思っているので、AppDelegate.m ファイルから「didFinishLaunchingWithOptions」を含めました。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Override point for customization after application launch.
    // Add the navigation controller's view to the window and display.


    NSLog(@"did finish launching with options");
    [self.window addSubview:tabBarController.view];
    [self.window makeKeyAndVisible];

    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)];

  if (self.locationManager == nil)
  {
    locationManager = [[CLLocationManager alloc] init];
    locationManager.purpose = @"We will try to use you location";
  }

  if([CLLocationManager locationServicesEnabled])
  {
    [self.locationManager startUpdatingLocation];
  }

  self.navigationController.navigationBar.tintColor = nil;

  return YES;
}
4

1 に答える 1

1

ビューコントローラーのビューをメインの UIWindow に追加する古い (iOS 3 以降) メソッドを使用しています。次のようになります。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // create properly sized window
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

    // create instance of root VC and assign to window
    MainViewController *vc = [[MainViewController alloc] init];
    self.window.rootViewController = vc;
    [vc release];

    [self.window makeKeyAndVisible];

    return YES;
}

View Controller の navigationController プロパティは、UINavigationController から実際に提示された場合にのみ設定されます。

詳細については、この記事を参照してください: http://www.cocoanetics.com/2012/11/revisited/

于 2013-01-05T07:50:06.137 に答える