2017-08-21 40 views
0

所以我的問題是我沒有創建故事板一個的UITabBarController和我堅持着如何沒有的viewController創建中的UITabBar一樣的項目。因爲我想要做的是我的UITabBarItem的第二項是一個不呈現視圖控制器的操作。如何在沒有一個視圖控制器創建uitabbar上迅速項內襯它

+0

使用標籤欄界面,但有一個選項卡*不*去一個新的觀點,可能會讓用戶非常困惑。不過,如果你想這樣做,你應該看看'UITabBarControllerDelegate'和/或'UITabBarDelegate' – DonMag

回答

0

如果你真的想這樣做(這是很非標準UI ......),那麼你可以添加一個空的視圖控制器,但在你的標籤欄的委託實施

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

} 
0

我實現了這樣的事情在一個應用程序(關閉按鈕),雖然我使用故事板。關閉按鈕是一個的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符合的方式來做到這一點。

UITabBarControllerDelegateshouldSelect方法,你可以實現:https://developer.apple.com/documentation/uikit/uitabbarcontrollerdelegate/1621166-tabbarcontroller

這些方針的東西:

- (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; 
} 
相關問題