2017-01-18 4 views
0

Я пытаюсь сделать tableView (внутри viewController), который отображает набор данных (что-то, что я делал раньше), но на этот раз он не отображает данные. Я уже объявлял viewController как dataSource и Delegate для tableView. Вот мои viewControllerClass:UITableView не отображает данные, но уже DataSource и делегат

class MenuViewController: UIViewController , UITableViewDataSource ,   UITableViewDelegate { 

    var menuItems = [ "1" , "2" , "3"] 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 


    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    open func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
    { 
     return menuItems.count 
    } 

    open func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
    { 
     let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) 

     cell.textLabel?.text = menuItems[indexPath.row] 

     return cell 

    } 
} 
+2

Где вы добавляете контроллер вида в качестве источника данных и делегата? Где табличный вид добавлен в представление и каковы его ограничения? Если вы установили точки останова в 'numberOfRowsInSection' и' cellForRowAt', будут ли удары точки останова? – keithbhunter

+2

Две вещи ... Убедитесь, что dataSource и делегат подключены в конструкторе интерфейса или вручную установлены в вашем представленииDidLoad ... Попробуйте заставить tableView.reloadData() – GregP

+0

@keithbhunter Я установил контроллер представления как источник данных и делегат в главном .storyboard и я установил точки останова, и оба были удалены –

ответ

0

Пожалуйста, проверьте, если вы создаете UITableView с помощью XIb/раскадровки затем и источник данных делегатов, подключенных выходы. Если вы создаете его программно, установите делегат и источник данных.

0

Вы должны зарегистрировать ячейку внутри viewDidLoad(), как это:

tableView.register (UITableViewCell.self, reuseIdentifier: "клетка"). Надеюсь, что это помогло

0

вам нужен IBOutlet для вашего стола. Из раскадровки вам нужно перетащить с вашего стола на свой MenuViewController. Затем внутри вашего viewDidLoad вам нужно установить источник данных и делегировать.

override func viewDidLoad() { 
     super.viewDidLoad() 
     tableView.dataSource = self 
     tableView.delegate = self 
    } 

Прямо сейчас ваш табличный взгляд не имеет понятия, кто предоставит данные. Из-за этого numberOfRowsInSection и cellForRow не вызывается. Поскольку они не называются, представление таблицы не знает, что отображать. Поскольку представление таблицы не знает, что отображать, оно ничего не отображает.

Смежные вопросы