Re: Problem with UITableView
Re: Problem with UITableView
- Subject: Re: Problem with UITableView
- From: Roland King <email@hidden>
- Date: Sun, 1 Aug 2010 13:34:14 +0800
I think you've missed the point of what Luke's saying. If dequeueReusableCellWithIdentifier: returns nil then you create a cell with that identifer, correct, and that cell can be recycled later by the tableview. That's what the [ [ [ UITableViewCell ] alloc ] initWith... ] autorelease ] does, so your code should look something like this
UITableViewCell *cell = [ tableView dequeueReusableCellWithIdentifier:<yourid> ];
if( !cell )
cell = <some line of code to create one>
What's that line of code look like in your version which uses a nib? Luke is suggesting that you're not actually creating a new cell in that instance but are reusing the same one from one single load of a nib, that's not going to work, you need to create a new object each time. Yes the table will hang onto and reuse them for you as it scrolls around but you need more than just one instance.
On 01-Aug-2010, at 1:25 PM, Laurent Daudelin wrote:
> Isn't the purpose of dequeueReusableCellWithIdentifier: of reusing tableview's objects? I've used this in the past and it never failed me. The documentation says "For performance reasons, a table view'€™s data source should generally reuse UITableViewCell objects when it assigns cells to rows in its tableView:cellForRowAtIndexPath: method". So, that's what I'm using. Of course, I have 2 different cells for the 2 sections and I can't understand why it doesn't work. Right now, I have 4 cells in section 2 but in the future, I might have dozens of cells representing dozens of entries. I cannot possibly create a different cell for each row, can I?
>
> -Laurent.
> --
> Laurent Daudelin
> AIM/iChat/Skype:LaurentDaudelin http://www.nemesys-soft.com/
> Logiciels Nemesys Software email@hidden
>
> On Jul 31, 2010, at 22:20, Luke Hiesterman wrote:
>
>> Are you returning the same cell 4 times? That's not right. You're going to need 4 separate cell instances even if they are of the same class and layout. It sounds like you might be taking 1 cell instance out of a nib and returning that each time.
>>
>> Luke
>>
>> Sent from my iPhone.
>>
>> On Jul 31, 2010, at 9:17 PM, Laurent Daudelin <email@hidden> wrote:
>>
>>> I've been banging my head on this for over a day now and I just can't find what's wrong with my tableview and the tableview cells.
>>>
>>> Basically, as you can see here:
>>>
>>> http://nemesys.dyndns.biz/Images/iPhoneScreenshot.png
>>>
>>> I have a table view made of 2 sections. Section 1 has only one tableview cell and, right now, it's barebone. Section 2 is supposed to have 4 cells. When I use a cell from my xib file in Interface Builder and the tableview appears, even though my method tableView:cellForRowAtIndexPath: is called 4 times, only the last cell is showing. If I however create the cells programmatically using:
>>>
>>> [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease]
>>>
>>> then they show up properly. Of course, the cell is created only once because on subsequent calls, I'm using the tableview dequeueReusableCellWithIdentifier:.
>>>
>>> I just don't get it. I use the same methods to set the textLabel and the detailTextLabel in both cases. I just tried a few times of dragging a default UITableView cell from the IB's Data Views tab, I don't modify it in any way in IB except to give it a cell identifier and connect it to my tableview controller so it can provide it to its tableview, it just won't work and I get the tableview showing as in the picture above. I want to use a tableview cell in IB because I need to add additional labels to it and don't feel like doing it programmatically.
>>>
>>> So, anybody can see what I am missing? I've done the same thing in other iPhone projects I just can't see why I can't do it now and I'm at the end of my rope here.
>>>
>>> Thanks in advance for any comment, info or help!
>
> _______________________________________________
>
> Cocoa-dev mailing list (email@hidden)
>
> Please do not post admin requests or moderator comments to the list.
> Contact the moderators at cocoa-dev-admins(at)lists.apple.com
>
> Help/Unsubscribe/Update your Subscription:
>
> This email sent to email@hidden
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden