Re: Problem with UITableView
Re: Problem with UITableView
- Subject: Re: Problem with UITableView
- From: Laurent Daudelin <email@hidden>
- Date: Sat, 31 Jul 2010 23:36:20 -0700
Roland, Luke and David,
I think you're right and I misunderstood the dequeue…
I looked at the AdvancedTableViewCells sample. Each time the dequeue… doesn't return a cell, it loads a new cell from a xib file, so, I guess, in effect creating a new cell.
I'll have to bundle my cell that is currently in the same bundle than my tableview controller and then load it to see if it works but I'm guessing it will.
Thanks!
-Laurent.
--
Laurent Daudelin
AIM/iChat/Skype:LaurentDaudelin http://www.nemesys-soft.com/
Logiciels Nemesys Software email@hidden
On Jul 31, 2010, at 22:34, Roland King wrote:
> 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