UIView Controller에서 TableView를 가지고 놀아봤어요.
그래서 ViewController에 TableView를 붙이고 거기에 각종 Cell을 설정해 봤습니다.
여기에 Storyboard로 TableView를 붙이고 코드로 칸과 구역을 설정하며 코드로 TableView를 붙이는 것도 OK입니다.요점은 다음과 같다.
1. 영역 제목
TableViewDataSource는 영역 제목을 설정하기 위해 다음과 같은 방법을 제공합니다.
func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
return titleOfSections[section]
}
이 옵션을 사용하면 영역 제목에 제목을 간단하게 설정할 수 있습니다.그러나 이렇게 설정된 제목은 글꼴 크기 등을 바꿀 수 없다.이번에는 델리멘의 방법으로 준비한 아래의 방법을 사용하자.func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let header = UILabel(frame: CGRectMake(0, 0, 200, 22))
header.text = titleOfSections[section]
header.font = UIFont.boldSystemFontOfSize(12)
return header
}
이 방법으로 UIlabel로 제목을 준비하고 이 UIlabel로 돌아갑니다.이 meso를 사용하여 UIImage에 답장하면 그림을 표시할 수 있습니다.상기 예시에서 각 구역의 제목은 배열되어 있고 이 방법에는 구역에 대응하는 제목이 설정되어 있다.
2. 셀 높이
셀에 이미지를 표시할 때 큰 이미지를 표시하려면 셀 높이를 높게 설정합니다.단원격의 높이는 아래의 경계부호 방법을 사용한다.
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return hight
}
그림% 1개의 캡션을 편집했습니다.다른 칸이 기본 상태를 유지하면 -1로 돌아가 기본 상태를 유지합니다.영역 제목 설정은 높이를 낮추기 때문에 영역 제목에 같은 방법을 제공합니다.그런데 여기 있어요.
func tableView(tableView: UITableView, estimatedHeightForHeaderInSection section: Int) -> CGFloat {
return 22 // セルの半分の高さ
}
estimate가 도착하는 방법을 사용해 보았습니다.칸에 대해서도 같은 방법을 준비했지만 이번 예처럼 잘 설정하지 못했다.부서 제목에 대해estimated를 통해 순조롭게 진행되었습니다.3. 셀 이미지 및 셀 텍스트 설정
DagaSource에서 셀 설정을 준비했습니다.
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
return cell
}
사용하다.TableViewCell 레벨의 단원을 돌려줘야 하는데, TabelViewCell 레벨은textLabel과 이미지 뷰라는 속성이 있습니다.
이 textLabel의 text에서 칸의 텍스트를 설정하고 이미지 뷰의 이미지에서 UIImage 형식의 이미지를 설정하면 그림은 왼쪽 오른쪽에 텍스트를 표시합니다.이때 이미지의 크기는 셀의 높이에 따라 달라지므로 셀의 높이가 클수록 이미지도 커집니다.
이 textLabel과 image View를 사용하면 표준 이미지와 텍스트의 표시는 매우 간단하게 임의로 배열됩니다.그러나 이 예의 3절처럼 여기에 단추를 놓으면 textLabel과 이미지 뷰를 제어할 수 없기 때문에 사용할 수 없습니다.콘텐츠 뷰에 하위 보기를 직접 표시할 때 텍스트와 그림도 하위 보기에 위치하고 놓아야 합니다.
4. 첨부 파일 뷰에서 컨트롤 구성
칸의 오른쪽은accessoryView로 다른 View로 바뀌었습니다. TableViewCell의accessoryType 속성에UItableViewAccessoryType를 설정하면Detail 단추와 표시기를 표시할 수 있습니다.그러나 이것은accessoyView와 같은 독립된 보기이기 때문에 이 보기를 초기화하고 하위 보기를 불러오면 다양한 제어를 할 수 있습니다.
다음 예에서storyboard에서 TableView를 설정하고 Outlet으로 ViewController 클래스에 연결합니다.
수행 결과:
테이블 뷰에서 세 개의 영역을 설정하고 첫 번째 영역에서 셀 높이를 변경하여 이미지를 표시합니다.첨부 파일 보기를 포함하는 디스플레이 방법은 기본값입니다.두 번째 절은 모든 칸을 첨부 파일 보기에 다른 컨트롤로 설정합니다.3절에서도 콘텐츠뷰는 단추를 설정해 보았다.
import UIKit
class ViewController: UIViewController,
UITableViewDelegate, UITableViewDataSource {
//Storyboard Outlet
@IBOutlet weak var testTableView: UITableView!
//상수//시야각 상수
let baseColor = UIColor(red: 204/255, green: 204/255, blue: 204/255, alpha: 1.0)
// テーブル用定数
let titleOfSections = ["Image Section", "Control Sections", "3'rd Section"]
let numberOfRows = [1, 3, 1]
let textOfRowsInImage = ["Image Cell"]
let textOfRowsInControl = ["Segment Control", "Switch", "Button"]
let textOfRowsInThird = ["Dual Control"]
//변수override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = baseColor
// テーブルビュー設定
testTableView.backgroundColor = baseColor
}
override func viewDidAppear(animated: Bool) {
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
//제어func onSegment(sender: UISegmentedControl) {
let segStatus = sender.selectedSegmentIndex
println("Segment \(segStatus)")
}
func onSwitch(sender: UISwitch) {
let swStatus = sender.on
}
//TableView Delegate Method// テーブルビューセルの高さ取得
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
if indexPath.section == 0 {
let widthOfScreen = UIScreen.mainScreen().bounds.width
return widthOfScreen / 3
} else {
return -1
}
}
// アクセサリビューボタンタップ時に呼び出される
func tableView(tableView: UITableView, accessoryButtonTappedForRowWithIndexPath indexPath: NSIndexPath) {
println("Line \(indexPath.row) tapped")
}
// セクションヘッダのビュー取得
func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let header = UILabel(frame: CGRectMake(0, 0, 200, 22))
header.text = titleOfSections[section]
header.font = UIFont.boldSystemFontOfSize(12)
return header
}
// セクションヘッダの高さ取得
func tableView(tableView: UITableView, estimatedHeightForHeaderInSection section: Int) -> CGFloat {
return 22 // セルの半分の高さ
}
//TableView Data Source Method// テーブルビューセルの設定
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "testCell")
switch indexPath.section {
case 0 :
cell.textLabel?.text = textOfRowsInImage[indexPath.row]
let testImage = UIImage(named: "DefaultPhoto.png")
cell.imageView?.image = testImage
cell.accessoryType = UITableViewCellAccessoryType.DisclosureIndicator
case 1 :
cell.textLabel?.text = textOfRowsInControl[indexPath.row]
switch indexPath.row {
case 0 :
let segment = UISegmentedControl(items: ["Seg1", "Seg2"])
segment.selectedSegmentIndex = 0
segment.addTarget(self, action: "onSegment:", forControlEvents: UIControlEvents.ValueChanged)
cell.accessoryView = UIView(frame: segment.frame)
cell.accessoryView?.addSubview(segment)
case 1 :
let onOffControl = UISwitch()
onOffControl.on = true
onOffControl.addTarget(self, action: "onSwitch:", forControlEvents: UIControlEvents.ValueChanged)
cell.accessoryView = UIView(frame: onOffControl.frame)
cell.accessoryView?.addSubview(onOffControl)
case 2 :
let buttonOnAccessory = UIButton.buttonWithType(UIButtonType.System) as! UIButton
buttonOnAccessory.setTitle("Button", forState: UIControlState.Normal)
buttonOnAccessory.addTarget(self, action: "onButton:", forControlEvents: UIControlEvents.TouchUpInside)
buttonOnAccessory.backgroundColor = UIColor.lightGrayColor()
buttonOnAccessory.frame = CGRectMake(0, 0, 60, 40)
buttonOnAccessory.tag = 0
cell.accessoryView = UIView(frame: buttonOnAccessory.frame)
cell.accessoryView?.addSubview(buttonOnAccessory)
default :
break
}
case 2 :
let buttonOnContent = UIButton.buttonWithType(UIButtonType.InfoLight) as! UIButton
buttonOnContent.addTarget(self, action: "onButton:", forControlEvents: UIControlEvents.TouchUpInside)
buttonOnContent.tag = 0
buttonOnContent.frame = CGRectMake(0, 0, 40, 40)
cell.contentView.addSubview(buttonOnContent)
let label = UILabel(frame: CGRectMake(40, 0, 100, 40))
label.text = textOfRowsInThird[indexPath.row]
cell.contentView.addSubview(label)
let buttonAcc2 = UIButton.buttonWithType(UIButtonType.System) as! UIButton
buttonAcc2.setTitle("Button", forState: UIControlState.Normal)
buttonAcc2.addTarget(self, action: "onButton:", forControlEvents: UIControlEvents.TouchUpInside)
buttonAcc2.backgroundColor = UIColor.lightGrayColor()
buttonAcc2.frame = CGRectMake(0, 0, 60, 40)
buttonAcc2.tag = 1
cell.accessoryView = UIView(frame: buttonAcc2.frame)
cell.accessoryView?.addSubview(buttonAcc2)
default :
break
}
return cell
}
// セクション数の設定
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return titleOfSections.count
}
// セクション内の行数
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return numberOfRows[section]
}
}
Reference
이 문제에 관하여(UIView Controller에서 TableView를 가지고 놀아봤어요.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/MichaelAwamura/items/b64c8830567f67f96003텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)