Swift UItableView Custom cell programmatically (documentation)?
I just played little bit. Even though all the colors/fonts are not quite right, this will give you good starting point. Hope it helps you.
class Stock {var name: String?var action: String?var price: String?init(stockData: [String: AnyObject]) { if let n = stockData["stockName"] as? String { name = n } if let a = stockData["action"] as? String { action = a } if let p = stockData["stockPrice"] as? Float { price = NSString(format: "%.2f", p) }}var backgroundColor: UIColor { if action == "sell" { return UIColor.greenColor() } return UIColor.blueColor()}var typeColor: UIColor { if action == "sell" { return UIColor.blackColor() } return UIColor.purpleColor()}var priceLabelColor: UIColor { if action == "sell" { return UIColor.redColor() } return UIColor.greenColor()}}class StockCell: UITableViewCell {let padding: CGFloat = 5var background: UIView!var typeLabel: UILabel!var nameLabel: UILabel!var priceLabel: UILabel!var stock: Stock? { didSet { if let s = stock { background.backgroundColor = s.backgroundColor priceLabel.text = s.price priceLabel.backgroundColor = s.priceLabelColor typeLabel.text = s.action typeLabel.backgroundColor = s.typeColor nameLabel.text = s.name setNeedsLayout() } }}override init(style: UITableViewCellStyle, reuseIdentifier: String?) { super.init(style: style, reuseIdentifier: reuseIdentifier) backgroundColor = UIColor.clearColor() selectionStyle = .None background = UIView(frame: CGRectZero) background.alpha = 0.6 contentView.addSubview(background) nameLabel = UILabel(frame: CGRectZero) nameLabel.textAlignment = .Left nameLabel.textColor = UIColor.blackColor() contentView.addSubview(nameLabel) typeLabel = UILabel(frame: CGRectZero) typeLabel.textAlignment = .Center typeLabel.textColor = UIColor.whiteColor() contentView.addSubview(typeLabel) priceLabel = UILabel(frame: CGRectZero) priceLabel.textAlignment = .Center priceLabel.textColor = UIColor.whiteColor() contentView.addSubview(priceLabel)}required init(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented")}override func prepareForReuse() { super.prepareForReuse()}override func layoutSubviews() { super.layoutSubviews() background.frame = CGRectMake(0, padding, frame.width, frame.height - 2 * padding) typeLabel.frame = CGRectMake(padding, (frame.height - 25)/2, 40, 25) priceLabel.frame = CGRectMake(frame.width - 100, padding, 100, frame.height - 2 * padding) nameLabel.frame = CGRectMake(CGRectGetMaxX(typeLabel.frame) + 10, 0, frame.width - priceLabel.frame.width - (CGRectGetMaxX(typeLabel.frame) + 10), frame.height)}}
in your view controller
var stocks: [Stock] = []override func viewDidLoad() { super.viewDidLoad() view.backgroundColor = UIColor.whiteColor() for stockData in dataArray { var stock = Stock(stockData: stockData) stocks.append(stock) } tableView = UITableView(frame: view.bounds, style: .Grouped) tableView.delegate = self tableView.dataSource = self tableView.separatorStyle = .None tableView.registerClass(StockCell.self, forCellReuseIdentifier: NSStringFromClass(StockCell)) view.addSubview(tableView)}func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return stocks.count}func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCellWithIdentifier( NSStringFromClass(StockCell), forIndexPath: indexPath) as StockCell cell.stock = stocks[indexPath.row] return cell}func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { return 70}
Custom Cell
class StockCell: UITableViewCell {let padding: CGFloat = 5var background: UIView!var typeLabel: UILabel!var nameLabel: UILabel!var priceLabel: UILabel!var stock: Stock? { didSet { if let s = stock { background.backgroundColor = s.backgroundColor priceLabel.text = s.price priceLabel.backgroundColor = s.priceLabelColor typeLabel.text = s.action typeLabel.backgroundColor = s.typeColor nameLabel.text = s.name setNeedsLayout() } }}override init(style: UITableViewCellStyle, reuseIdentifier: String?) { super.init(style: style, reuseIdentifier: reuseIdentifier) backgroundColor = UIColor.clearColor() selectionStyle = .None background = UIView(frame: CGRectZero) background.alpha = 0.6 contentView.addSubview(background) nameLabel = UILabel(frame: CGRectZero) nameLabel.textAlignment = .Left nameLabel.textColor = UIColor.blackColor() contentView.addSubview(nameLabel) typeLabel = UILabel(frame: CGRectZero) typeLabel.textAlignment = .Center typeLabel.textColor = UIColor.whiteColor() contentView.addSubview(typeLabel) priceLabel = UILabel(frame: CGRectZero) priceLabel.textAlignment = .Center priceLabel.textColor = UIColor.whiteColor() contentView.addSubview(priceLabel)}required init(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented")}override func prepareForReuse() { super.prepareForReuse()}override func layoutSubviews() { super.layoutSubviews() background.frame = CGRectMake(0, padding, frame.width, frame.height - 2 * padding) typeLabel.frame = CGRectMake(padding, (frame.height - 25)/2, 40, 25) priceLabel.frame = CGRectMake(frame.width - 100, padding, 100, frame.height - 2 * padding) nameLabel.frame = CGRectMake(CGRectGetMaxX(typeLabel.frame) + 10, 0, frame.width - priceLabel.frame.width - (CGRectGetMaxX(typeLabel.frame) + 10), frame.height)}}