Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Панель навигации в добавленных контроллерах представления

Автор вопроса: Cari95Ответов: 1

В настоящее время у меня есть три контроллера представления, присоединенные к одному контроллеру представления с именем 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)
    }
}

xcodeiosswiftuinavigationcontrollerswift2

Ответы

Ответ 1 · Adil Soomro

Небольшое объяснение здесь, надеюсь, оно ответит на ваш вопрос.

Если вы используете UINavigationController для управления потоком контроллеров представления. Тогда вам не нужно предоставлять настраиваемую панель навигации для каждого контроллера представления, верхний левый и правый элемент кнопки панели и заголовок контроллера представления являются частью UINavigationItem и UINavigationItem является свойством UIViewController.

Каждый раз, когда вы нажимаете контроллер представления на UINavigationController, контроллер навигации берет элемент навигации из контроллера представления и устанавливает его на панель навигации. Панель навигации управляется UINavigationController автоматически.

Вам просто нужно отредактировать и предоставить информацию, связанную с навигацией, в соответствующем файле UINavigationItem.

В раскадровке, если вы не видите элемент навигации, связанный с контроллером представления, вы можете перетащить элемент из объектов и поместить его внутрь контроллера представления:

Если вы нажмете на элемент навигации, вы сможете отредактировать эти три параметра в инспекторе свойств:

Если вы перетащите UIBarButtonItem из объектов в свой UINavigationItem, связанный с вашим UIViewController, он автоматически добавит его на левую кнопку панели.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы