Подключите клетки-прототипы к контроллеру представления [Swift 4] - PullRequest
0 голосов
/ 06 декабря 2018

Я новичок в программировании и в настоящее время работаю над приложением, похожим на новостную ленту.У меня был нормальный просмотр таблиц и он работает нормально, но я хочу попробовать его сейчас с типом костюмной ячейки.Поэтому я создал один и подумал, что подключение ярлыков обычным способом будет совершенно нормально, но я ошибся.Поэтому мне интересно, как я могу позволить моей текстовой метке подключаться к моему контроллеру представления, чтобы я мог использовать свою собственную ячейку.

class ViewController: BaseViewController, UITableViewDelegate, UITableViewDataSource {

@IBOutlet var newsfeedTableView: UITableView!

var ref: DatabaseReference!

var posts = [String]()


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

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = UITableViewCell(style: UITableViewCell.CellStyle.default, reuseIdentifier: "cell")

//here is where I need the custom label to get the posts 
    cell.textLabel?.text = posts[indexPath.row]
    cell.textLabel?.font = UIFont.boldSystemFont(ofSize: 18.0)

    return cell
 }
}

Costum cell

Ответы [ 2 ]

0 голосов
/ 06 декабря 2018

Я предполагаю, что вы используете раскадровку.

Прежде всего, вы должны понимать, что разница в использовании собственной ячейки таблицы невелика.В этом случае, в методе "cellForRowAtIndexPath", после удаления вашей ячейки из очереди, вы просто должны типизировать ячейку таблицы как 'as!YourCustomTableCellClass.После этой строки вы можете получить доступ к каждому свойству этого класса.

Сначала создайте ячейку таблицы на раскадровке так, как вам удобно.

Теперь создайте подкласс UITableViewCell и назначьте этот класс своей пользовательской ячейке-прототипу, которую вы спроектировали на раскадровке.Кроме того, не забудьте установить «повторно использовать идентификатор в ячейке таблицы Storyboard.

Затем подключите ваши розетки с пользовательским классом ячеек из Storyboard.

Теперь вы можете использовать код, подобный следующему:

 class YourTableCellClass: UITableViewCell {

// I'm using these outlets as a sample, but you have to connect them from Storyboard.
var leftTextLabel: UILabel!
var rightTextLabel: UILabel!
}

class YourTableController: UITableViewController {

override func viewDidLoad() {
    super.viewDidLoad()
}

// MARK: - TableView Delegate & DataSource
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return 1 // return your number of rows here...
}

override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    return 100 // return the height for the row here.....or you can set height from Storyboard if you have fix height of all rows.
}

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "CellIdentifier", for: indexPath) as! YourTableCellClass
    cell.leftTextLabel.text = "Text" // Set text here....
    cell.rightTextLabel.text = "Text" // Set text here....
    return cell
}
}
0 голосов
/ 06 декабря 2018

Создайте подкласс UITableViewCell и подключите IBOutlets к этому классу

class YourCell: UITableViewCell {
    @IBOutlet weak var customLabel: UILabel!
    ...
}

не забудьте установить класс ячейки-прототипа в раскадровке:

enter image description here

, затем в методе cellForRowAt источника данных уменьшите значение в ячейке, находящейся в очереди, до YourCell

let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! YourCell

, после чего вы получите доступ к YourCell розеткам

cell.customLabel.text = "SomeText"
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...