2017-08-21 20 views
0

私の問題は、ストーリーボードなしでUITabBarControllerを作成していて、ViewControllerなしでUITabBarアイテムを作成する方法が残っていることです。私がしたいのは、私のUITabBarItemの2番目のアイテムは、View Controllerを表示しないアクションです。あなたが本当にこれをしたい場合はView Controllerを使用せずにSwiftにuitabbarアイテムを作成する方法

+0

タブバーのインタフェースを使用して、しかし、1つのタブを有する*ない*新しいビューに移動し、ユーザーにとって非常に混乱する可能性があります。しかし、それをやりたいのであれば、 'UITabBarControllerDelegate'や' UITabBarDelegate'を参照してください。 – DonMag

答えて

0

は、その後、あなたは空のビューコントローラを追加するが、あなたのタブバーのデリゲートに

func tabBarController(tabBarController: UITabBarController, shouldSelectViewController viewController: UIViewController) -> Bool { 

} 
0

は、私はこのような何かを実装して実装することができ(それは...かなり非標準のUIです)私はストーリーボードを使用していますが、アプリケーション(閉じるボタン)。閉じるボタンはViewControllerをであるが、私はそれが通常のボタンのように動作するために取得するには、次のコードを使用:

func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool { 
    // this provides UI feedback that the button has been pressed, even though it leads to the dismissal 
     if viewController == self.viewControllers![4] { 

      viewController.tabBarItem.image? = UIImage(named: "TabBarClose")!.imageWithColor(UIColor.red).withRenderingMode(UIImageRenderingMode.alwaysOriginal) 

      return false 
     } else { 
     return true 
     } 
    } 

override func viewDidDisappear(_ animated: Bool) { 
//sets the close button back to original image 
    self.viewControllers![4].tabBarItem.image = UIImage(named: "TabBarClose")! 
} 

func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController) { 
// this is so it never actually goes to the close buttons viewController 
    currentTab = self.selectedIndex != 4 ? self.selectedIndex:currentTab 
    saveTabIndexToPreferences(currentTab!) 

} 

override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) { 
    // assign functionality to the close button 
    if item.tag == 100 {// this is old code, there is probably a better way to reference the tab 
     dismissTabBar() 
    } else { 

    }   
} 

(尋ねられた質問に対して)EDIT

func selectTabIndexFromPreferences() { 
    let defaults:UserDefaults = UserDefaults.standard 
    selectedIndex = defaults.integer(forKey: "songSelectionTabIndex_preference") 
} 

func saveTabIndexToPreferences(_ index:Int?) { 
    if index != nil { 
     let defaults:UserDefaults = UserDefaults.standard 
     defaults.set(index!, forKey: "songSelectionTabIndex_preference") 
    } 
} 

tab-bar close button

+0

currenttabとsaveTabIndexToPreferencesを宣言する – reggie

+0

currentTabはローカル変数です。私は答えに他の関数を追加します – solenoid

0

これを行うためのAPIが準拠しています。これらの線に沿ってhttps://developer.apple.com/documentation/uikit/uitabbarcontrollerdelegate/1621166-tabbarcontroller

何か:

UITabBarControllerDelegateはあなたが実装することができshouldSelect方法がある

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController { 
    if (viewController == self.centerViewController) { 
    UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Test" message:@"This is a test" preferredStyle:UIAlertControllerStyleAlert]; 
    UIAlertAction *defaultAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) {}]; 
    [alert addAction:defaultAction]; 
    [tabBarController presentViewController:alert animated:YES completion:nil]; 

    return NO; 
    } 

    return YES; 
} 
関連する問題