通过另一个viewController显示一个viewController,Swift
我有我的UISearchController在一个单独的UITableViewController(TableSearch)的结果。通过另一个viewController显示一个viewController,Swift
我想,当我们选择一行时,用navBar和tabBar显示DetailViewController,并有返回按钮导致SearchViewController。
我想:
dispatch_async(dispatch_get_main_queue(), {() -> Void in
var viewController = UIViewController()
titreDetail = "Boo"
viewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("Detail") as! DetailViewController
self.showViewController(viewController, sender: nil)
})
但它目前的DetailViewController没有导航栏和使用TabBar。
我尝试这样做后:
dispatch_async(dispatch_get_main_queue(), {() -> Void in
//SearchViewController
var vc = UIViewController()
vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("Search") as! SearchViewController
//DetailViewController
var viewController = UIViewController()
titreDetail = "Boo"
viewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("Detail") as! DetailViewController
vc.showViewController(viewController, sender: nil)
})
没有任何反应..
我该怎么办呢有这样的:
SearchTable - > SearchViewController - > DetailViewController?
谢谢!
使用 self.navigationController .pushViewController(的viewController,动画:真)?
我试过vc.navigationController ?.pushViewController(viewController,animated:true)和self.navigationController?.pushViewController(viewController,animated:true)。没有反应.. SearchTable没有链接到一个导航控制器.. –
你想从搜索视图控制器去搜索表和搜索表没有显示顶部的导航栏..右...? –
当我在searchTable上时,我想转到DetailViewController,它显示DetailViewController,但在弹出窗口上,navBar和Tabbar消失了。 –
self.navigationController .pushViewController(的viewController,动画:真) 视图控制器是你创建的实例你想推视图控制器 - L.Valentine
其实我创建了一个委托协议,它的工作原理是完美的。
protocol SearchTableDelegateProtocol {
func didTapExtendInSearchViewControllerWithIndex(hashtag: String, inTrending: SearchTable)
}
class SearchTable : UITableViewController, UISearchResultsUpdating {
var delegate : SearchTableDelegateProtocol?
....
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
print("vc1")
tableView.deselectRowAtIndexPath(indexPath, animated: true)
dispatch_async(dispatch_get_main_queue(), {() -> Void in
self.delegate?.didTapExtendInSearchViewControllerWithIndex(self.filtered[indexPath.row][0], inTrending: self)
})
}
然后:
class SearchViewController : UIViewController, UICollectionViewDelegate, UICollectionViewDataSource, SearchTableDelegateProtocol {
var resultSearchController = UISearchController()
override func viewDidLoad() {
super.viewDidLoad()
let locationSearchTable = storyboard!.instantiateViewControllerWithIdentifier("SearchTable") as! SearchTable
resultSearchController = UISearchController(searchResultsController: locationSearchTable)
resultSearchController.searchResultsUpdater = locationSearchTable
locationSearchTable.delegate = self
}
...
func didTapExtendInPhotoCollectionViewCellWithIndex(index: Int, inTrendingCell: CollectionCellOne) {
print (index)
self.performSegueWithIdentifier("hashtag", sender: "Instagram")
}
}
谢谢大家!
使用'pushViewController'而不是'presentViewController' – Daniel
我试过vc.navigationController?.pushViewController(viewController,animated:true)和self.navigationController?.pushViewController(viewController,animated:true)。没有任何反应.. SearchTable没有链接到导航控制器.. –
您将不得不先弹出searchTable,或者为新的ViewController再次创建navBar/tabBar,或者为了继承navBar/tabBar而推送searchTable – Daniel