我目前有三个视图控制器附加到一个名为V1的视图控制器。 V1有一个水平滚动视图,滚动时可以在屏幕上推送其他三个视图。
我想在三个视图控制器的每一个中嵌入一个导航栏,这样每个视图控制器都可以有自己独立的条形按钮和标题,这些按钮和标题基于滚动到哪个页面。
我的问题是确定我嵌入导航栏的位置。我尝试了V1,但它没有给出我想要的结果。如何让每个视图都有自己的导航栏?
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)
}
}
答案 0 :(得分:0)
这里有一点解释,希望它能回答你的问题。
如果您使用UINavigationController
来管理视图控制器流。然后,您不需要为每个视图控制器提供自定义导航栏,左上角和右上角按钮项以及视图控制器的标题是UINavigationItem
的一部分,而UINavigationItem
是属性UIViewController
。
每次将视图控制器推送到UINavigationController
时,导航控制器都会从视图控制器中获取导航项,并将其项目设置到导航栏上。导航栏由UINavigationController
自动管理。
您只需在关联的UINavigationItem
。
在故事板中,如果您没有看到与视图控制器关联的导航项,则可以从对象中拖动项目并将其拖放到视图控制器中:
如果单击导航项,则可以从属性检查器编辑这三个选项:
如果您将UIBarButtonItem
从对象拖到与UINavigationItem
关联的UIViewController
,则会自动将其添加到您的左侧栏按钮。