2016-07-02 46 views
0

我在视图控制器的另一个顶部有很多视图,我试图模拟一个标签栏。用户可以点击菜单中的任何按钮,并根据点击哪个按钮来呈现视图。所有其他视图将隐藏。在iOS中模拟一个标签栏

我写了下面的代码,它没有正确呈现视图(有时会显示出来,其他时间则不会)。

presentViewWithName(.home) // this will present the view at the very bottom of the hierarchy 

enum Views { 
    case home 
    case sketchpad 
    case help 
    case settings 
} 

func presentViewWithName(name: Views) { 
    self.turnAlphaOnToEveryMenuButton() 
    switch name { 
    case .home: 
     self.hideAllViews() 
     self.menuView.buttonHome.dimmerAlpha() 
    case .sketchpad: 
     self.sketchpadView.animateToggleAlpha() 
     self.menuView.buttonSketchpad.dimmerAlpha() 
    case .help: 
     self.helpView.animateToggleAlpha() 
     self.menuView.buttonHelp.dimmerAlpha() 
    case .settings: 
     self.settingsView.animateToggleAlpha() 
     self.menuView.buttonSettings.dimmerAlpha() 
    } 
} 

func turnAlphaOnToEveryMenuButton() { 
    self.menuView.buttonHome.alpha = 1 
    self.menuView.buttonSketchpad.alpha = 1 
    self.menuView.buttonHelp.alpha = 1 
    self.menuView.buttonSettings.alpha = 1 
} 

func hideAllViews() { 
    self.settingsView.alpha = 0 
    self.sketchpadView.alpha = 0 
    self.helpView.alpha = 0 
} 

extension UIView { 
    func animateToggleAlpha() { 
     UIView.animateWithDuration(0.25) { 
      self.alpha = self.alpha == 1 ? 0 : 1 
     } 
    } 

    func dimmerAlpha() { 
     UIView.animateWithDuration(0.25) { 
      self.alpha = self.alpha == 1 ? 0.4 : 1 
     } 
    } 
} 

我基本上改变了视图的alpha。假设您想呈现主视图。这是层次结构最底层的观点。我只是隐藏所有的意见。假设我想在层次结构的顶部,即设置视图中呈现视图。我隐藏所有视图,然后显示设置视图。

我该如何解决这个/更好地做到这一点?

回答

2

应该有4个视图回家,画板,帮助和设置。你所有的观点应该有相同的超级观点。应该连接到同一个电源插座menuViews为家,画板,帮助和分别设置,

@IBOutlet weak var menuViews: [UIView]! 

这是你的枚举,

enum Views { 
    case home 
    case sketchpad 
    case help 
    case settings 
} 

添加函数来显示视图,

func presentViewWithName(name: Views) { 
    UIView.animateWithDuration(0.25) { 
     for (index, view) in menuViews.enumerate() { 
      let alpha = (name == (Views(rawValue: index)!)) ? 1.0 : 0.0 
      view.alpha = alpha 
     } 
    } 
} 
+0

很好的答案,很好的一个 – Fattie