Original Post: September 15, 2015
===============
Update: July 13, 2017 - Xcode 8.3.3 + Swift 3.1
1. Create a new file called MyTableViewCell.swift as:
import UIKit
class MyTableViewCell: UITableViewCell {
var myLabel1: UILabel!
var myLabel2: UILabel!
var myButton1 : UIButton!
var myButton2 : UIButton!
required init(coder aDecoder: NSCoder) {
fatalError("init(coder:)")
}
override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
let gap : CGFloat = 10
let labelHeight: CGFloat = 30
let labelWidth: CGFloat = 150
let lineGap : CGFloat = 5
let label2Y : CGFloat = gap + labelHeight + lineGap
let imageSize : CGFloat = 30
myLabel1 = UILabel()
myLabel1.frame = CGRect(x: gap, y: gap, width: labelWidth, height: labelHeight)
myLabel1.textColor = UIColor.black
contentView.addSubview(myLabel1)
myLabel2 = UILabel()
myLabel2.frame = CGRect(x: gap, y: label2Y, width: labelWidth, height: labelHeight)
myLabel2.textColor = UIColor.black
contentView.addSubview(myLabel2)
myButton1 = UIButton()
myButton1.frame = CGRect(x: bounds.width-imageSize - gap, y: gap, width: imageSize, height: imageSize)
myButton1.setImage(UIImage(named: "browser.png"), for: UIControlState.normal)
contentView.addSubview(myButton1)
myButton2 = UIButton()
myButton2.frame = CGRect(x: bounds.width-imageSize - gap, y: label2Y, width: imageSize, height: imageSize)
myButton2.setImage(UIImage(named: "telephone.png"), for: UIControlState.normal)
contentView.addSubview(myButton2)
}
}
2. Modify ViewController.swift as:
import UIKit
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
var myArray = ["AAA", "BBB", "CCC", "DDD"]
override func viewDidLoad() {
super.viewDidLoad()
let tableView = UITableView(frame: view.bounds, style: UITableViewStyle.grouped)
tableView.delegate = self
tableView.dataSource = self
view.addSubview(tableView)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 85
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return myArray.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = MyTableViewCell(style: UITableViewCellStyle.default, reuseIdentifier: "myIdentifier")
cell.myLabel1.text = myArray[indexPath.row]
cell.myLabel2.text = "\(indexPath.row)"
cell.myButton1.addTarget(self, action: #selector(pressedBrowser(sender: )), for: UIControlEvents.touchUpInside)
cell.myButton2.addTarget(self, action: #selector(pressedTelephone(sender: )), for: UIControlEvents.touchUpInside)
return cell
}
func pressedBrowser(sender: UIButton) {
print("pressedBrowser")
}
func pressedTelephone(sender: UIButton) {
print("pressedTelephone")
}
Original Post: September 15, 2015
1. Create a new file called MyTableViewCell.swift as:
import UIKit
class MyTableViewCell: UITableViewCell {
var myLabel1: UILabel!
var myLabel2: UILabel!
var myButton1 : UIButton!
var myButton2 : UIButton!
required init(coder aDecoder: NSCoder) {
fatalError("init(coder:)")
}
override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
let gap : CGFloat = 10
let labelHeight: CGFloat = 30
let labelWidth: CGFloat = 150
let lineGap : CGFloat = 5
let label2Y : CGFloat = gap + labelHeight + lineGap
let imageSize : CGFloat = 30
myLabel1 = UILabel()
myLabel1.frame = CGRectMake(gap, gap, labelWidth, labelHeight)
myLabel1.textColor = UIColor.blackColor()
contentView.addSubview(myLabel1)
myLabel2 = UILabel()
myLabel2.frame = CGRectMake(gap, label2Y, labelWidth, labelHeight)
myLabel2.textColor = UIColor.blackColor()
contentView.addSubview(myLabel2)
myButton1 = UIButton()
myButton1.frame = CGRectMake(bounds.width-imageSize - gap, gap, imageSize, imageSize)
myButton1.setImage(UIImage(named: "browser.png"), forState: UIControlState.Normal)
contentView.addSubview(myButton1)
myButton2 = UIButton()
myButton2.frame = CGRectMake(bounds.width-imageSize - gap, label2Y, imageSize, imageSize)
myButton2.setImage(UIImage(named: "telephone.png"), forState: UIControlState.Normal)
contentView.addSubview(myButton2)
}
}
2. Modify ViewController.swift as:
import UIKit
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
var myArray = ["AAA", "BBB", "CCC", "DDD"]
override func viewDidLoad() {
super.viewDidLoad()
let tableView = UITableView(frame: view.bounds, style: UITableViewStyle.Grouped)
tableView.delegate = self
tableView.dataSource = self
view.addSubview(tableView)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return 85
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return myArray.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell = MyTableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "myIdentifier")
cell.myLabel1.text = myArray[indexPath.row]
cell.myLabel2.text = "\(indexPath.row)"
cell.myButton1.addTarget(self, action: "pressedBrowser:", forControlEvents: UIControlEvents.TouchUpInside)
cell.myButton2.addTarget(self, action: "pressedTelephone:", forControlEvents: UIControlEvents.TouchUpInside)
return cell
}
func pressedBrowser(sender: UIButton) {
println("pressedBrowser")
}
func pressedTelephone(sender: UIButton) {
println("pressedTelephone")
}
}
3. The result is:
========================================
This comment has been removed by the author.
ReplyDelete