2012-02-07 55 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