2012-02-07 43 views
0

这听起来很简单,但不知何故,我无法摆脱这一点。我创建了一个空应用程序,通过在AppDelegate.h和AppDelegate.m文件中创建它们添加了两个tabBar项目。现在我的第二个tabBar项目,当用户点击第二个tabBar项目我想要显示一个popOverController。我已经编程创建,通过以下链接Link。现在我的问题是我想在我的代码中使用导航控制器,我创建了我的popOverController(AppDelegate.m),以便在我的popOverController.m中,我想使用NavController来推送其他视图。如果有人有一个简单的方法来实现这一点,将不胜感激。UIPopOverController与UINavigationController与Xcode 4.2.1

谢谢

+0

除非您为它创建自己的用户界面,否则不需要创建PopOverController的子类。 – twilson 2012-02-07 16:58:21

+0

看看苹果的iPad人机界面指南文档,它确实应该完全足以实现你想要的。它似乎微不足道,除非我失去了一些东西? – twilson 2012-02-07 16:59:29

回答

1

我很困惑你的问题在哪里。你想做什么是可能的,应该是直截了当的。如果您的问题是Next视图没有被推送,因为在popoverController中,您无权访问self.navigationController。如此简单的解决方案,创建一个UINavigationController变量并将navigationController传递给您的popover或使用通知来传递推回到您的AppDelegate的视图。

编辑

您可以使用此侦听通知:

[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(popOverViewControllerSelected:) name:@"popOverViewSelectedViewToPush" object:someObjectTellingYouWhatViewToPush]; 

然后用它来发送通知:

[[NSNotificationCenter defaultCenter] postNotificationName:@"popOverViewSelectedViewToPush" object:@"ViewController1"]; 

的选择将是你的函数名(我只是把一个描述性的名字“popOverViewControllerSelected”)和对象需要是什么viewController的信息推(即1,2,3或@“view1”)。然后,你将需要:

- (void)popOverViewControllerSelected:(id)sentObject 
{ 
    // If your passing an NSNumber could use a switch 
       switch ((int)sentObject) { 
      case 0: 
       //Push This view 
       break; 
      case 1: 
       //Push that view 
       break; 
      case 2: 
       //Push someother view 
       break; 
      default: 
       break; 
     } 
} 

我说的是另一种方式是在你popOverViewController.h加入

@interface ......... 
{ 
    UINavigationController *navController; 
} 
@property (nonatomic, retain) UINavigationController *navController; 

在你popOverViewController.m添加:

@synthesize navController; 

然后在哪里添加popOverViewController只需添加:

[popOverViewController setNavController:self.navigationController]; 

现在在你的PopOverViewController您可以拨打:

[navController pushViewController:someViewController animated:YES]; 

但我建议做第一个选项。

+0

嗨Jaybit,你的解决方案似乎令人信服,请你提供一个示例代码,以便更好地理解,因为我是IOS的新手。 – 125369 2012-02-08 09:10:31

+0

我编辑我的帖子以获得更多信息和代码。这里的主要想法是访问NavigationController。第一部分是通过通知,第二部分是通过将navigationController传递给popover。 – Jaybit 2012-02-08 16:01:19

+0

感谢您的宝贵信息 – 125369 2012-02-09 09:58:51

相关问题