2013-06-13 51 views
0

我在iOS中有一個項目,我試圖修改它在另一個項目中使用。該項目工作正常,但是當我在標籤欄控制器嘗試嵌入側視圖控制器,則給了一個錯誤容器V中的父子視圖

**MFSideMenuDemoStoryboard[23760:c07] -[UITabBarController setLeftMenuViewController:]: unrecognized selector sent to instance 0x757a590 
2013-06-13 10:08:51.062 MFSideMenuDemoStoryboard[23760:c07] **** * * **Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UITabBarController setLeftMenuViewController:]: unrecognized selector sent to instance 0x757a590'** 

據我所知,有一些錯誤在代碼中appDelegate .M但不能弄清楚

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:[NSBundle mainBundle]]; 

MFSideMenuContainerViewController *container = (MFSideMenuContainerViewController *)self.window.rootViewController; 

UINavigationController *navigationController = [storyboard instantiateViewControllerWithIdentifier:@"navigationController"]; 


UIViewController *leftSideMenuViewController = [storyboard instantiateViewControllerWithIdentifier:@"leftSideMenuViewController"]; 
UIViewController *rightSideMenuViewController = [storyboard instantiateViewControllerWithIdentifier:@"rightSideMenuViewController"]; 


[container setLeftMenuViewController:leftSideMenuViewController]; 
[container setRightMenuViewController:rightSideMenuViewController]; 
[container setCenterViewController:navigationController]; 

return YES; 
} 

這是我的故事板

enter image description here

回答

0

正如你可以在故事板和異常中看到的,你的根視圖控制器是一個標籤欄控制器,而不是一個側面菜單控制器。

UITabBarController有一個屬性viewControllers,它允許您訪問tabBarController中的控制器。你想讓索引爲0的控制器。這意味着在第一個選項卡viewController。

像這樣的東西應該工作:

UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController; 
MFSideMenuContainerViewController *container = tabBarController.viewControllers[0]; 
// check that container is actually a container and not something else 
NSParameterAssert([container isKindOfClass:[MFSideMenuContainerViewController class]]); 
+0

您好Matthias,感謝您的幫助,試過這段代碼,但它仍然沒有調出中央視圖控制器,在這個例子中恰好是演示視圖控制器,如果你可以更詳細說明會有很大的幫助。謝謝,基本上我認爲問題是與'代碼'tabBarController SetView控制器: – iSrini

+0

嗨最後搞清楚了,修改了一下代碼,並得到它完美的工作。 我想把最終的代碼放在這裏供其他人蔘考,以後如何去做。評論部分太小而無法將它們放在這裏。 – iSrini

+0

@Matthua Bauch 您好Matthias Bauch,我有另一個問題可能是你可以幫我用它 [鏈接](http://stackoverflow.com/questions/17531648/implementing-a-split-view-controller- under-a-tab-bar-controller)** bold ** 謝謝 – iSrini

2

你的根視圖控制器不是MF SideMenuContainerViewController。它是一個UITabBarController。如果你想使用MFSideMenuContainerViewController你將要檢查的文件:https://github.com/mikefrederick/MFSideMenu/

這是一個基本的例子:

UIViewController *leftSideMenuViewController = [storyboard instantiateViewControllerWithIdentifier:@"leftSideMenuViewController"]; 
UIViewController *rightSideMenuViewController = [storyboard instantiateViewControllerWithIdentifier:@"rightSideMenuViewController"]; 
MFSideMenuContainerViewController *container = [MFSideMenuContainerViewController 
               containerWithCenterViewController: self.window.rootViewController 
               leftMenuViewController: leftSideMenuViewController 
               rightMenuViewController: rightSideMenuViewController]; 
self.window.rootViewController = container; 
[self.window makeKeyAndVisible]; 

這將與MFSideMenuContainerViewController取代現有的根視圖控制器,把你的老根視圖控制器作爲中央視圖控制器。

+0

是帕特里克,當然這個源代碼是由邁克·弗雷德裏克的如何設置rootview控制器UITabbar控制器? – iSrini

+0

也許我應該已經更清楚了:https://github.com/mikefrederick/MFSideMenu/#basic-setup他告訴你在那裏設置你的根視圖控制器爲MFSideMenuContainerViewController。你不能在故事板中做到這一點。最好的辦法是用代碼完成它,然後使用你的故事板的instantiateInitialViewController來獲得你現有的控制器。 –

+0

嗨帕特里克,感謝您的幫助,但它不會工作,因爲一些更多的設置需要完成。如果該項目與示例類似,那麼它將起作用。我真的很新,這是我從iOS開始的第一個項目。我需要知道如何設置tabBarController作爲rootViewController。因爲它是tabbar需要聲明一個數組。並需要設置父視圖控制器,容器視圖控制器和子視圖控制器。如果你可以更詳細說明會有很大的幫助。謝謝 – iSrini

相關問題