-> Я взял класс, который является потомком NSObject в этом классе. Я создал объект tableView.
-> Методы numberOfRowsInSection и cellForRowAt находятся в одном классе
-> Я даже назначил объект того же класса свойству dataSource & делегат
Так что моя проблема в том, что вызывается numberOfRowsInSection, но не вызывается cellForRowAt. Я просто получаю tableView без какой-либо ячейки.
-> Я проверил, что numberOfRowsInSection не возвращает 0
Пожалуйста, проверьте код ниже:
Это класс что я создал. Я создаю объект этого класса в дочернем классе UIViewController
ПРИМЕЧАНИЕ: -
1) Я вызвал функцию configureTV () в методе init. В этом configureTV () я назначил оба свойства dataSource и делегат его значение.
2) Я проверил, что вызывается метод configureTV ()
3) Я проверил, что я регистрирую reuseId для ячейки
4) У меня есть проверил, что свойству dataSource присвоена ссылка или объект класса успешно
5) Я проверил, что вызываются методы numberOfRows & numberOfSection. Даже я пробовал эти два метода с жестко закодированными значениями
import UIKit
class MyClass:NSObject,UITableViewDataSource,UITableViewDelegate
{
var superView:UIView!
var tableView:UITableView = UITableView()
let value = ["A","B","C","D","E","F"]
override init()
{
super.init()
}
convenience init(superView:UIView)
{
self.init()
self.superView = superView
self.configureTV()
print("SuperView Initialized")
}
func configureTV()
{
self.tableView.register(UITableViewCell.self, forCellReuseIdentifier: "c")
self.tableView.dataSource = self
self.tableView.delegate = self
self.tableView.frame = self.superView.frame
self.superView.addSubview(self.tableView)
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
print(value.count)
return value.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
let cell = tableView.dequeueReusableCell(withIdentifier: "c", for: indexPath)
cell.backgroundColor = .green
cell.textLabel?.text = value[indexPath.row]
return cell
}
}
//-------Creating The Object Of The Above Class------------
class ABCD:UIViewController
{
override func viewDidLoad()
{
let obj = MyClass(superView: self.view)
}
}
---------------------------- I Есть решение -------------------------
Я нашел решение самостоятельно, но решение очень странное.
Внутри класса ABCD я создал объект, как показано ниже
// Код до исправления: -
class ABCD:UIViewController
{
override func viewDidLoad()
{
let obj = MyClass(superView: self.view)
}
}
Теперь я сделал очень незначительное изменение, т.е. Я сделал переменную «obj» как свойство класса и проблема была решена.
// Код после исправления, который решил проблему: -
class ABCD:UIViewController
{
var obj:MyClass!
override func viewDidLoad()
{
obj = MyClass(superView: self.view)
}
}
Я хочу знать, почему это произошло.