附加视图控制器中的导航栏

时间:2015-09-29 14:47:19

标签: ios xcode swift uinavigationcontroller swift2

我目前有三个视图控制器附加到一个名为V1的视图控制器。 V1有一个水平滚动视图,滚动时可以在屏幕上推送其他三个视图。

我想在三个视图控制器的每一个中嵌入一个导航栏,这样每个视图控制器都可以有自己独立的条形按钮和标题,这些按钮和标题基于滚动到哪个页面。

我的问题是确定我嵌入导航栏的位置。我尝试了V1,但它没有给出我想要的结果。如何让每个视图都有自己的导航栏?

enter image description here

class ViewController: UIViewController {

    @IBOutlet var scrollView: UIScrollView!
    override func viewDidLoad() {
        super.viewDidLoad()
        //Changes Navi bar
        // navigationController!.navigationBar.barTintColor = UIColor(red: 237/255, green: 15/255, blue: 140/255, alpha: 1)
        // navigationController!.navigationBar.barStyle = UIBarStyle.Black

        // Do any additional setup after loading the view, typically from a nib.
        let v1 = storyboard!.instantiateViewControllerWithIdentifier("A") as! Offers
        let v2 : View2 = View2(nibName: "View2", bundle: nil)        
        let v3 = storyboard!.instantiateViewControllerWithIdentifier("C") as! DiscoveryPage

        self.addChildViewController(v1)
        self.scrollView.addSubview(v1.view)
        v1.didMoveToParentViewController(self)

        self.addChildViewController(v2)
        self.scrollView.addSubview(v2.view)
        v2.didMoveToParentViewController(self)

        self.addChildViewController(v3)
        self.scrollView.addSubview(v3.view)
        v3.didMoveToParentViewController(self)

        //Set the frame

        var v2Frame : CGRect = v2.view.frame
        v2Frame.origin.x = self.view.frame.width
        v2.view.frame = v2Frame

        var v3Frame : CGRect = v3.view.frame
        v3Frame.origin.x = self.view.frame.width * 2
        v3.view.frame = v3Frame

        self.scrollView.contentSize = CGSizeMake(self.view.frame.width * 3, self.view.frame.height)
    }
}

1 个答案:

答案 0 :(得分:0)

这里有一点解释,希望它能回答你的问题。

如果您使用UINavigationController来管理视图控制器流。然后,您不需要为每个视图控制器提供自定义导航栏,左上角和右上角按钮项以及视图控制器的标题是UINavigationItem的一部分,而UINavigationItem是属性UIViewController

每次将视图控制器推送到UINavigationController时,导航控制器都会从视图控制器中获取导航项,并将其项目设置到导航栏上。导航栏由UINavigationController自动管理。

您只需在关联的UINavigationItem

中修改并提供导航相关信息

在故事板中,如果您没有看到与视图控制器关联的导航项,则可以从对象中拖动项目并将其拖放到视图控制器中:

Screenshot

如果单击导航项,则可以从属性检查器编辑这三个选项:

navigation item property

如果您将UIBarButtonItem从对象拖到与UINavigationItem关联的UIViewController,则会自动将其添加到您的左侧栏按钮。