Deuce bigalow
Deuce bigalow

Reputation: 311

Back button position on navigation controller

I'm currently trying to develop a custom search for an iOS app.

I have managed to get the search controller appearing and the search bar appearing properly, although my only problem is that I need the back button to appear on the right of the navigation bar rather than the left, see below

(As you can see the back button is on the left but I need it to be on the right) https://i.sstatic.net/U4UMA.jpg

Here is my code:

import UIKit

class SearchTop10Controller: UITableViewController, UISearchResultsUpdating {

override func viewDidLoad() {
    super.viewDidLoad()

    let searchController = UISearchController(searchResultsController: self);

    self.definesPresentationContext = true;
    searchController.searchResultsUpdater = self;
    //        searchController.hidesNavigationBarDuringPresentation = true;

    searchController.dimsBackgroundDuringPresentation = false;
    searchController.searchBar.sizeToFit();
    self.navigationItem.titleView = searchController.searchBar;
    self.tableView.tableHeaderView = searchController.searchBar;
}

override func viewDidAppear(animated: Bool) {


}

func updateSearchResultsForSearchController(searchController: UISearchController) {
    //do whatever with searchController here.
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

Upvotes: 2

Views: 1654

Answers (1)

Wyetro
Wyetro

Reputation: 8588

You can add a back button to the right bar item like this:

let backButton : UIBarButtonItem = UIBarButtonItem(image: UIImage(named: "back_icon"), style: UIBarButtonItemStyle.Plain, target: self, action: #selector(back))
self.navigationItem.rightBarButtonItem = backButton

Where back_icon is an image that you are using and back is the following function:

func back() {
    self.navigationController?.popViewControllerAnimated(true)
}

To hide the left bar item:

self.navigationItem.leftBarButtonItem = nil

or:

self.navigationItem.hidesBackButton = true

Upvotes: 3

Related Questions