2017-01-16 1 views
1

Я работаю над небольшим проектом с несколькими отдельными контроллерами представлений на моей раскадровке и создал кнопку, показывающую UITableViewController, но мне нужно было чтобы пользователь мог вернуться на домашнюю страницу. Я создал кнопку поверх MainTableVC, и когда я запустил приложение, он показывает кнопку. Мне нужно, чтобы кнопка просто отображала мой главный контроллер представлений, который называется просто контроллером просмотра. Я все еще участвую, поэтому каждый шаг вперед для меня является прыжком. Вот код viewDidLoad, где я создал кнопку.Как подключить кнопку, сделанную в UITableVC, чтобы показать отдельный вид в Story Board

let button1 = UIButton(frame: CGRect(origin: CGPoint(x: self.view.frame.width/2 - 25, y: self.view.frame.height - 70), size: CGSize(width: 50, height: 50))) 
button1.backgroundColor = UIColor.blue 

self.navigationController?.view.addSubview(button1) 

У меня также есть UITableViewController, перечисленных в классе. Спасибо всем за вашу помощь, я ценю это. Итак, чтобы подвести итог, мне нужно подключить button1, который я создал к диспетчеру просмотра (потому что вы не можете просто поместить кнопку поверх табличного представления, а затем просто управлять кликом на другое представление и устанавливать «показать». Это на самом деле упрощает что мне нужно закодировать аспект просто cntrl перетаскивания с одной кнопки на вид и установки «показать». Спасибо всем.

+0

Как отображается ваш UITableView? Вы нажимаете его на стек навигации с помощью 'self.navigationController.pushViewController' или представляете его с помощью' self.presentViewController'? – JoGoFo

+0

У меня есть настройка для контроллера навигации JoGoFo, если это то, что вы просите. – Nivix

+0

JoGoFo это self.presentViewController? – Nivix

ответ

0

Насколько я понял .. вы можете вручную создать кнопку в вашем MainViewController использовании и добавить объект к нему

let button1 = UIButton(frame: CGRect(origin: CGPoint(x: self.view.frame.width/2 - 25, y: self.view.frame.height - 70), size: CGSize(width: 50, height: 50))) 
button1.backgroundColor = UIColor.blue 
button1.addTarget(self, action: #selector(MainViewController.actionOpenTableView(_:)), forControlEvents: .TouchUpInside) 
self.navigationController?.view.addSubview(button1) 

также создать функцию actionOpenTableView в своем классе, захватив объект кнопки 1, где вы можете push/present TableViewController (: здесь MyTableViewController) с помощью segue или программно.

func actionOpenTableView(btn:UIButton){ 
//if using segue of motherboard 
// self.performSegueWithIdentifier("MoveToTableView", sender: self) 


//if using programmically 
let tableVC = self.storyboard?.instantiateViewControllerWithIdentifier("MyTableVC")as! MyTableViewController 
     self.navigationController?.pushViewController(tableVC, animated: true) 
} 

Если вы используете pprogrammically, убедитесь, что вы предоставили StoryboardID для вашего TableviewController в раскадровке.

enter image description here как только вы получите на вашем TableViewController вы можете использовать по умолчанию кнопки назад .. или создать специальный метод, как следовать для получения обратно в MainViewController от MyTableViewController

@IBAction func mBackActionBtn(sender: AnyObject) { 
     self.navigationController?.popViewControllerAnimated(true) 
    } 
0

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

self.navigationItem.leftBarButtonItem = UIBarButtonItem(title: "Title", style: .plain, target: self, action: #selector(navButtonPressed)) 

вы можете реализовать метод для действия:

func navButtonPressed() { 
    // if pushed onto nav vc: 
    // _ = self.navigationController?.popViewController(animated: true) 

    // if presented modally (as suggested in your comment: 
    self.dismiss(animated: true, completion: nil) 
} 
+0

и что я должен поставить для #selector (navButtonPushed)? спасибо JoGoFo – Nivix

+0

'# selector' - это ключевое слово,' navButtonPressed' - это имя метода, который вы хотите вызвать, когда пользователь нажимает кнопку. Это была вторая часть моего ответа. – JoGoFo

+0

JoGoFo мой код не компилируется здесь, это скриншот, пожалуйста, проверьте его. http://imgur.com/a/hQamM – Nivix