Можете ли вы сделать TableView в пользовательской ячейке? - PullRequest
0 голосов
/ 14 января 2020

У меня есть кастом TableViewCell. Внутри этого я хочу поставить еще один TableView, но у меня проблемы. У меня есть что-то вроде этого:

import UIKit

class ByteCell: UITableViewCell, UITableViewDelegate, UITableViewDataSource {


    @IBOutlet weak var title: UILabel!
    @IBOutlet weak var game: UIImageView!
    @IBOutlet weak var TableView: UIView!


    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code

    }

    override func setSelected(_ selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)

        // Configure the view for the selected state
    }
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = UITableViewCell()
        return cell
    }
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 5
    }

}

Прежде всего, я не могу написать:

tableView.delegate = self
tableView.dataSource = self

где-нибудь здесь, поэтому я не могу изменить tableView вообще.

Во-вторых, TableView, который появляется, не имеет строк и не может быть прокручен. По сути, я хочу сделать прокрутку TableView внутри пользовательской ячейки, которая находится внутри TableView. Возможно ли это?

Спасибо!

1 Ответ

1 голос
/ 14 января 2020

Вы абсолютно можете поместить UITableView в UITableViewCells

Куда поместить .delegate = self зависит от того, как вы создали ячейку.

Если вы создали ее программно, используйте переопределить init

 override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
        super.init(style: style, reuseIdentifier: reuseIdentifier)
        tableView = UITableView()
        tableView.delegate = self
        tableView.dataSource = self
    }

Если, однако, вы загружаете ячейку из пера или раскадровки, используйте initWithCoder

-(id)initWithCoder:(NSCoder *)aDecoder
{
    self = [super initWithCoder:aDecoder];
    if (self) {
       tableView = UITableView()
       tableView.delegate = self
       tableView.dataSource = self
    }
    return self;
}

Просто обратите внимание, вы настраиваете себя на неровную дорогу. Тем не менее, это вполне возможно, так что удачи!

...