example of a custom tableviewcell
I'm trying to write a simple score keeper for a pool (billiards) game that my friends and I play. I have the basic mechanics down with the default tableviewcells, but I'd like to make the result a bit prettier by using a custom tableviewcell. I've looked around github and the forums, but I can't find any examples of how to do this. Does anyone have a simple example I can copy from? I'd like to have a cell that has two text labels and an image view all in a single row.
Any help or pointers would be very helpful.
That's fine. It was a pretty quick code anyway.
@tachijuan Don't know if this helps you...
'Classes' - SettingsSheet
It's switches in a cell... but you could add labels and an image instead by the same method.
I think that will do it. Have a long flight tomorrow so I can play with this. Thanks for the help fellas.
OK - I was able to make it work by creating a subview and adding the text/image before I added it to the tableviewcell. Still not sure how I would change it after the fact. I tried using the "name" property as the way to refer to the subview. How do I refer to the subviews after I've added them to the tableviewcell?
Sorry for the rookie questions, but I'm still wrapping my head around this one.
@tachijuan This is rather brute force, but works. Add a list of cells as a public property, and append the cells as they are created... see updated SettingsSheet class.
Cool. That is brute force. Is there no way to give the subview a "name" property so that I can do something like:
cell = ui.TableViewCell() tl = ui.TextLabel() tl.name = "hits" cell.add_subview(tl) cell['hits'] = "2"
Or something like that? The docs seem to say that you can but for some reason it's not working for me.
@tachijuan A ui.View can be used like a dict of it's named subviews... but I think this little test script shows that a ui.TableViewCell doesn't support that... try it with View and then TableViewCell. It looks like subviews[n] is as good as it gets.
import ui v = ui.View() #v = ui.TableViewCell() b = ui.Button() b.name = 'btn' v.add_subview(b) print v['btn'].name
@techijuan Ok, the trick is to add the subviews to the cell's content_view not the cell... then it works to use content_view like a dict.
P.S. ListDataSource also has an (undocumented ?) tableview attributute that is useful for upwards navigation
Cool. Thank you!