Changing an Int to a CGFloat in Swift to return heightForRowAtIndexPath tableview function

1.7k views Asked by At

I am sure that I am missing something really simple, but I just can't get it to work.

I will try to explain better what I am doing to try to help others if they have this same issue.

This was my function:

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
    return (count * 40 + 75) as CGFloat
}

The above function doesn't work. Thanks to the help I received, I found that this is the way to do it:

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
    return CGFloat(count * 40 + 75)
}

Thanks!

2

There are 2 answers

0
Martin R On

Yes, it is simple:

let i = 123 // an Int
let f = CGFloat(i) // a CGFloat

If you command-click on CGFloat then you'll see all its initializers:

init(_ value: Float)
init(_ value: Double)
// ... many more, and finally:
init(_ value: UInt)
init(_ value: Int)
0
Evgeny Karkan On

Swift 5, there is a handy constructor for this purpose, init(integerLiteral:)

let cgFloat = CGFloat(integerLiteral: intVar)