UItableView 셀 헤더 크기 변경
11776 단어 SwiftUITableViewCellUITableView
알림 일람표처럼 제목을 클릭하고 칸을 열고 내용을 표시하거나 숨기는 표를 만듭니다
먼저 양식과 컨텐트를 준비합니다.
이렇게 임시로 표와 데이터를 준비합니다.
class ExpandingTableViewViewController: UIViewController {
@IBOutlet weak var tableView: UITableView!
var datasource = [ExpandingTableViewCellContent]()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
tableView.dataSource = self
tableView.delegate = self
tableView.tableFooterView = UIView()
tableView.estimatedRowHeight = 40 // これはStoryBoardの設定で無視されるかも?
tableView.rowHeight = UITableViewAutomaticDimension // ここが重要
datasource = [ExpandingTableViewCellContent(title: "内閣支持率、10ポイント増の52% 不支持率と逆転 ",
subtitle: " 日本経済新聞社とテレビ東京による22~24日の世論調査で、安倍内閣の支持率は52%となり、前回の5月下旬の42%から10ポイント上昇した。不支持率は5月の53%から42%に下がった。支持率が不支持率を上回るのは2月以来、4カ月ぶり。"),
ExpandingTableViewCellContent(title: "「起業の都」再び 京都に集まる資金・人材 ",
subtitle: "京セラ、日本電産など個性的な企業を生み出した京都で、もう一つの顔・京都大学と企業の関係が変わってきた。従来は共同研究が中心だったが、小回りの利くスタートアップ企業を通じ「大学の知」をビジネスに生かす動きが本格化。多くのノーベル賞受賞者を輩出し、自然科学分野の基礎研究に定評がある京大を核として「起業の都」に新たな波が起きている。"),
ExpandingTableViewCellContent(title: "アマゾン、AIスピーカーの“スキル”1000種に ",
subtitle: "米アマゾン・ドット・コムが投入した人工知能(AI)スピーカーの日本国内で使える独自機能が増え、スマートフォン(スマホ)のアプリに該当する「スキル」と呼ばれる機能がこのほど1000種類を突破した。スキルの技術仕様を外部に公開していることが、付加価値の高いスキルの開発につながっているようだ。")]
}
U I T a bleViewAutomaticDimension 잊지 마십시오.이야기판의 칸에 라벨을 놓다
셀에 위치 관계식만 지정하기
높이를 지정하지 않음
라인을 0으로 설정하여 여러 줄을 표시할 수 있습니다.
셀 정의
아웃렛으로 스토리보드 설정의 탭을 연결하고subtitle 내용을 표시하거나 숨기는 데 사용할 로고를 준비합니다
// セルに表示するデータを格納するクラス
class ExpandingTableViewCellContent {
var title: String?
var subtitle: String?
var expanded: Bool
init(title: String, subtitle: String) {
self.title = title
self.subtitle = subtitle
self.expanded = false
}
}
class ExpandingTableViewCell: UITableViewCell {
@IBOutlet var titleLabel: UILabel!
@IBOutlet var subtitleLabel: UILabel!
override func awakeFromNib() {
super.awakeFromNib()
}
func set(content: ExpandingTableViewCellContent) {
self.titleLabel.text = content.title
self.subtitleLabel.text = content.expanded ? content.subtitle : ""
}
}
본문 표시 여부를 조정합니다테이블 내부 프로세스 정의
extension ExpandingTableViewViewController : UITableViewDataSource, UITableViewDelegate {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return datasource.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView .dequeueReusableCell(withIdentifier: String(describing: ExpandingTableViewCell.self), for: indexPath) as! ExpandingTableViewCell
cell.set(content: datasource[indexPath.row])
return cell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let content = datasource[indexPath.row]
content.expanded = !content.expanded
tableView.reloadRows(at: [indexPath], with: .automatic)
}
}
칸을 눌렀을 때expaned 값을 전환합니다.그리고reloadRows 방법으로 그 칸을 다시 불러오고, 칸의 set 방법을 다시 실행합니다.
실행
→
견본
Reference
이 문제에 관하여(UItableView 셀 헤더 크기 변경), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/katafuchix/items/0e3af044e8445e68fc31텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)