2017-04-10 11 views
2

したがって、ユーザーが検索バーに何かを入力しているときに表示されるナビゲーションバーの下にtableviewがあります。そして、すべてがうまくいくように見えます。しかし、ユーザーがtableview内のセルを選択してからdetailViewControllerから戻ったときに、View Controllerをプッシュした後で、私のtableviewが乱れてしまいます。TableViewセルは 'Back'を押した後にナビゲーションの対象となりますか?

•問題:detailViewControllerを押した後で、テーブルビューの一番上のセルがナビゲーションバーで覆われています。しかし、これは初めには起こりません。

私が試してみた:•

1. Toggled 'Under Top Bars' in the storyboard 
    2. Check all my constraint 

これは、これは私がdetailViewControllerに移動する方法ですサブビュー

func updateSearchResults(for searchController: UISearchController) { 

    // When the user is typing 
    if let searchText = searchController.searchBar.text, !searchText.isEmpty { 

     // add the tableview onto the subview 
     view.addSubview(tableView) 

     self.searchController.dimsBackgroundDuringPresentation = false 

     // filter the username array, to match the text in the search bar 
     filteredUsernames = unfilterdUsernames.filter({ (username) -> Bool in 
      return username.lowercased().contains(searchText.lowercased()) 
     }) 

     if let usernames = filteredUsernames { 
      getUsersFromUsernames(usernames: usernames, completion: { (users) in 
       self.filteredUsers = users 
      }) 
     } 

     // else, the user is not typing anything. Remove the tableview from the subview 
    } else { 
     self.searchController.dimsBackgroundDuringPresentation = false 

     tableView.removeFromSuperview() 
     filteredUsernames = unfilterdUsernames 

    } 
    // reload tableview data 
    tableView.reloadData() 
} 

上にテーブルビューを追加する方法です:

tableView(_ tableView:UITableView、 didSelectRowAt indexPath:IndexPath)

// the profile view that I want to display, after the user select one of the tableViewCell 
    let profileController = UIStoryboard(name: "Profile", bundle: nil).instantiateViewController(withIdentifier: "profile") as? ProfileCollectionViewController 

    // user is the value that I want to transfer to the profileController 
    // which user from the indexPath in tableView 
    if let user = filteredUsers?[indexPath.row] { 
     userToPass = user 
     // set the delegate to self 
     profileController?.userDataDelegate = self 
     // push a navigationController to profileController 
     self.navigationController?.pushViewController(profileController!, animated: true) 

detailViewControllerに行く前に:

enter image description here

detailViewControllerから背中押されたボタンの後:最初のインデックスはで覆われている

ナビゲーションコントローラ

enter image description here

+0

行が実際に存在し、カバーされていますか?あるいは、テーブルの唯一の行「バビ」ですか?言い換えれば、あなたが「プロフィール」ビューから「戻ってくる」ときに、テーブルをプルダウンして一番上の行(「ジャジャン」を含む)を見ることができますか? – DonMag

+0

@DonMagはい、一番上の行は 'jajang'ですが、一番上の行はナビゲーションバーで覆われています(詳細ビューから戻るボタンを押した後)。意味私はまだ下にスクロールすることができます。最初はそれがそうではなかった。 –

+0

ok - あなたが下にスクロールして指を離すと、一番上の行*は見えますか?それとも、ナビゲーションバーの下に「スナップバック」していますか? – DonMag

答えて

0

ストーリーボードに移動します。

ViewController(テーブルビューまたはナビゲーションコントローラではありません)を選択します。

アトリビュートインスペクタで、​​

関連する問題