개발 가닥은 이미 알고 있기 때문에 ViewController에 TableVeiw 를 추가 해서 기능을 구현 하려 하면
UITableViewDataSource, UITableViewDelegate 를 상속 받아서
delegate메서드를 추가 해야 하낟.
swift도 마찬가지라 생각 하고
바로
clase SomeViewConteroller: UIViewController {
}
==>
class SomeViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
}
이렇게 상속 받은 다음
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.menuName.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell: HomeMenuTableViewCell = self.tableView.dequeueReusableCellWithIdentifier("HomeMenuTableViewCell") as! HomeMenuTableViewCell
cell.menuImage.image = UIImage(named: self.iconName[indexPath.row])
cell.menuLabel.text = self.menuName[indexPath.row]
cell.checkOnOffImage.image = UIImage(named: self.checkOnOff[indexPath.row])
return cell
}
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
print("You selected cell #\(indexPath.row)!")
}
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
let isHighRes = UIDevice.currentDevice().isHighResolution
if isHighRes {
//return 99
return 66
}
else
{
return 66
}
}
위와 같은 함수를 작성 해 주면 된다.
swift를 쓰니까
extension을 이용 할 수 있다.
class 선언 부는 그대로 두고
}
클래스 브레이스 끝 하단에
extension SomeViewController: UITableViewDataSource {
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.menuName.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell: HomeMenuTableViewCell = self.tableView.dequeueReusableCellWithIdentifier("HomeMenuTableViewCell") as! HomeMenuTableViewCell
cell.menuImage.image = UIImage(named: self.iconName[indexPath.row])
cell.menuLabel.text = self.menuName[indexPath.row]
cell.checkOnOffImage.image = UIImage(named: self.checkOnOff[indexPath.row])
return cell
}
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
print("You selected cell #\(indexPath.row)!")
}
}
extension SomeViewController: UITableViewDelegate {
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return 66
}
}
이렇게 extension으로 작성을 해도 된다.
그럼 요런 넘들을 Ctrl + Opt + Cmd + 2
Show The Code Snipet Library 에 추가 하고
중간 중간 수정 해야 하는 부분에 <#Code#> 로 처리를 하면 아주 좋은 스니핏 라이브러리가 된다.
textFieldDelegate도 마찬가지!