[英]Can't show one view controller on top of another
我試圖顯示一個視圖控制器從UITableView的另一個。 當用戶單擊按鈕之一時,我希望視圖控制器出現在用戶按下按鈕時所在的視圖控制器上方。 可以這樣說,用戶處於提要視圖中,當他們單擊按鈕時,視圖控制器將在提要視圖控制器上滑動並帶有模糊效果。 因此,基本上,舊的視圖控制器將充當新視圖控制器的模糊背景。 我正在嘗試實現類似tumblr的功能。
這是我在AppDelegate中的代碼:
-(BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController {
if ([viewController.title isEqualToString:@"Create"]) {
CreateOptionViewController *createOptionViewController = [[CreateOptionViewController alloc] init];
[viewController addChildViewController: createOptionViewController];
createOptionViewController.view.frame = viewController.view.bounds;
[viewController.view addSubview: createOptionViewController.view];
[viewController.view bringSubviewToFront:createOptionViewController.view];
[createOptionViewController didMoveToParentViewController: viewController];
return NO;
}
return YES;
}
這是我要實現的目標:
傳遞給此方法的viewController是最終被選擇的視圖控制器。 如果返回“ NO”,則該視圖控制器將永遠不會被選中。
例如,您有一個帶有2個標簽的標簽欄控制器,並且默認情況下選擇了“標簽1”。 如果用戶點擊“選項卡2”,則下面的函數將被調用,“ viewController”將是屬於“選項卡2”的視圖控制器。 如果此函數返回“是”,則將附加到“選項卡2”的視圖控制器置於最前面。 如果函數返回“ NO”,則什么也不會發生。 表示未顯示與“選項卡2”關聯的視圖控制器。
-(BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
您的代碼嘗試將子視圖控制器添加到將不會顯示的視圖控制器。 由於該方法返回“ NO”,因此“ viewController”不是最重要的。
[viewController addChildViewController: createOptionViewController];
您需要將“ createOptionViewController”作為childViewController添加到當前正在顯示的視圖控制器中。 在這種情況下,您可能希望將其添加為
tabBarController.selectedViewController
CreateOptionViewController *createOptionViewController = [[CreateOptionViewController alloc] init];
UIViewController *selectedVC = tabBarController.selectedViewController;
[selectedVC addChildViewController: createOptionViewController];
createOptionViewController.view.frame = viewController.view.bounds;
[selectedVC.view addSubview: createOptionViewController.view];
[selectedVC.view bringSubviewToFront:createOptionViewController.view];
[createOptionViewController didMoveToParentViewController: viewController];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.