通过另一个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?

谢谢!

enter image description here

+0

使用'pushViewController'而不是'presentViewController' – Daniel

+0

我试过vc.navigationController?.pushViewController(viewController,animated:true)和self.navigationController?.pushViewController(viewController,animated:true)。没有任何反应.. SearchTable没有链接到导航控制器.. –

+0

您将不得不先弹出searchTable,或者为新的ViewController再次创建navBar/tabBar,或者为了继承navBar/tabBar而推送searchTable – Daniel

使用 self.navigationController .pushViewController(的viewController,动画:真)?

+0

我试过vc.navigationController ?.pushViewController(viewController,animated:true)和self.navigationController?.pushViewController(viewController,animated:true)。没有反应.. SearchTable没有链接到一个导航控制器.. –

+0

你想从搜索视图控制器去搜索表和搜索表没有显示顶部的导航栏..右...? –

+0

当我在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") 

    } 
} 

谢谢大家!