2017-07-06 3 views
0

私は単純な静的テーブルビューで作成する予定のアプリケーションで設定画面が必要です。残念ながら私は問題に遭遇しました。私のストーリーボードのビューにカスタムビューコントローラを割り当てると、ビューテーブルは実行時に黒くなります。テーブルビューでの表示は、デフォルトのビューコントローラでのみ機能します

faulty static table example

これがデフォルトの動作を変更していないビューコントローラにもかかわらず、です。この時点では、設定文字列をタイトルに入れるために、1つのメソッドをオーバーライドするだけです。

import Foundation 
import UIKit 

class SettingsViewController: UITableViewController { 

    override func loadView() { 
     self.title = "Settings" 
    } 

} 

カスタムビューコントローラを削除すると、テーブルが正常に表示されます。 correct table

次のコードを使用して表示に切り替えます。

guard let vc = UIStoryboard(name:"Main", bundle:nil).instantiateViewController(withIdentifier: "settingsViewController") as? UITableViewController else { // or SettingsViewcontroller for the first version 
       print("Could not instantiate view controller with identifier of type SettingsViewController") 
       return 
      }    
self.navigationController?.pushViewController(vc, animated:true) 

この問題の原因は何ですか?

答えて

2

super.loadView()に電話する必要があります。UITableViewController's loadView()を上書きし、スーパークラスメソッドを呼び出さず、黒い画面が表示されるためです。

import Foundation 
import UIKit 

    class SettingsViewController: UITableViewController { 

     override func loadView() { 
      self.title = "Settings" 
      super.loadView() 
     } 

    } 
関連する問題