하나의 UITableView 내에서 요소가별로 변하지 않는 2개 이상의 셀을 구분
UITableViewCell
를 사용하고 싶지만, 내용의 구성은 그다지 변하지 않는 경우의 이야기를 상정.우선 부모 UITableViewCell 를 하나 만든다
xib 파일 없이 하나 UITableViewCell
를 만들고 모든 셀에 공통 컴포넌트를 속성으로 가져간다.
CommonTableViewCell.swiftimport UIKit
class CommonTableViewCell: UITableViewCell {
@IBOutlet weak var label: UILabel!
}
상위 UITableViewCell을 상속받고 자식 UITableViewCell을 필요한 유형만 준비합니다.
여기에서는 ATableViewCell
와 BTableViewCell
를 만든다.ATableViewCell
에는 UILabel
와 UIButton
를 둔다.
UILabel
쪽은 부모이다 CommonTableViewCell
의 label
로 묶는다.
UIButton
의 분은 ATableViewCell
의 프로퍼티로서 가지고 둔다.
BTableViewCell
에는 UILabel
만 설치하고 CommonTableViewCell
의 label
와 묶는다.
현시점에서 CommonTableViewCell
의 label
에는 ATableViewCell
와 BTableViewCell
안에 UILabel
가 붙어 있다.
사용법
우선은 nib 파일을 등록.
override func viewDidLoad() {
super.viewDidLoad()
var nib = UINib(nibName: "ATableViewCell", bundle: nil)
tableView.registerNib(nib, forCellReuseIdentifier: "ATableViewCell")
nib = UINib(nibName: "BTableViewCell", bundle: nil)
tableView.registerNib(nib, forCellReuseIdentifier: "BTableViewCell")
tableView.delegate = self
tableView.dataSource = self
}
tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath)
내에서
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let row = indexPath.row
var cell:CommonTableViewCell!
// 乱数の3の剰余が0ならATableViewCellを使う
if (rand() % 3 == 0){
var aCell = tableView.dequeueReusableCellWithIdentifier("ATableViewCell") as ATableViewCell
aCell.button.setTitle("Hoge", forState: UIControlState.Normal)
cell = aCell
} else {
cell = tableView.dequeueReusableCellWithIdentifier("BTableViewCell") as BTableViewCell
}
cell.label.text = "\(row)"
return cell
}
등과 같이 상속의 이점을 살려 각 값을 설정할 수 있다.
Reference
이 문제에 관하여(하나의 UITableView 내에서 요소가별로 변하지 않는 2개 이상의 셀을 구분), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/dr_yst/items/18740c99723f089d6e5e
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import UIKit
class CommonTableViewCell: UITableViewCell {
@IBOutlet weak var label: UILabel!
}
여기에서는
ATableViewCell
와 BTableViewCell
를 만든다.ATableViewCell
에는 UILabel
와 UIButton
를 둔다.UILabel
쪽은 부모이다 CommonTableViewCell
의 label
로 묶는다.UIButton
의 분은 ATableViewCell
의 프로퍼티로서 가지고 둔다.BTableViewCell
에는 UILabel
만 설치하고 CommonTableViewCell
의 label
와 묶는다.현시점에서
CommonTableViewCell
의 label
에는 ATableViewCell
와 BTableViewCell
안에 UILabel
가 붙어 있다.사용법
우선은 nib 파일을 등록.
override func viewDidLoad() {
super.viewDidLoad()
var nib = UINib(nibName: "ATableViewCell", bundle: nil)
tableView.registerNib(nib, forCellReuseIdentifier: "ATableViewCell")
nib = UINib(nibName: "BTableViewCell", bundle: nil)
tableView.registerNib(nib, forCellReuseIdentifier: "BTableViewCell")
tableView.delegate = self
tableView.dataSource = self
}
tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath)
내에서
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let row = indexPath.row
var cell:CommonTableViewCell!
// 乱数の3の剰余が0ならATableViewCellを使う
if (rand() % 3 == 0){
var aCell = tableView.dequeueReusableCellWithIdentifier("ATableViewCell") as ATableViewCell
aCell.button.setTitle("Hoge", forState: UIControlState.Normal)
cell = aCell
} else {
cell = tableView.dequeueReusableCellWithIdentifier("BTableViewCell") as BTableViewCell
}
cell.label.text = "\(row)"
return cell
}
등과 같이 상속의 이점을 살려 각 값을 설정할 수 있다.
Reference
이 문제에 관하여(하나의 UITableView 내에서 요소가별로 변하지 않는 2개 이상의 셀을 구분), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/dr_yst/items/18740c99723f089d6e5e
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
override func viewDidLoad() {
super.viewDidLoad()
var nib = UINib(nibName: "ATableViewCell", bundle: nil)
tableView.registerNib(nib, forCellReuseIdentifier: "ATableViewCell")
nib = UINib(nibName: "BTableViewCell", bundle: nil)
tableView.registerNib(nib, forCellReuseIdentifier: "BTableViewCell")
tableView.delegate = self
tableView.dataSource = self
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let row = indexPath.row
var cell:CommonTableViewCell!
// 乱数の3の剰余が0ならATableViewCellを使う
if (rand() % 3 == 0){
var aCell = tableView.dequeueReusableCellWithIdentifier("ATableViewCell") as ATableViewCell
aCell.button.setTitle("Hoge", forState: UIControlState.Normal)
cell = aCell
} else {
cell = tableView.dequeueReusableCellWithIdentifier("BTableViewCell") as BTableViewCell
}
cell.label.text = "\(row)"
return cell
}
Reference
이 문제에 관하여(하나의 UITableView 내에서 요소가별로 변하지 않는 2개 이상의 셀을 구분), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/dr_yst/items/18740c99723f089d6e5e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)