Table cells 'on top' laden... discussie in Ontwikkelen voor iOS forum; ( verdwijnt na registratie ) Het was alweer eventjes geleden dat ik met de SDK bezig was, maar onlangs alles weer even opgepakt om wat projecten weer nieuw leven in ...
|
Registreer | FAQ | Ledenlijst | Kalender | Berichten van vandaag | Zoeken |
#1
|
|||
|
|||
Table cells 'on top' laden...
Het was alweer eventjes geleden dat ik met de SDK bezig was, maar onlangs alles weer even opgepakt om wat projecten weer nieuw leven in te blazen.
Nou zie je in veel twitter clients, dat ze met een timer telkens nieuwe berichten ophalen, en als deze er dan zijn worden ze bovenaan de tablelist toegevoegd. ( nee ik ben niet de zoveelste twitter client aan het maken ) Nou vraag ik me dus af, hoe zorg ik ervoor dat de table cells die ik maak bovenop toegevoegd worden ipv onderaan.?? Iemand een idee?
__________________
iPhone 2G 16GB @3.0 | t-Mobile iPhone 3G 8GB @3.0 |
|
|
Gesponsorde links (verdwijnt na registratie)
|
#2
|
|||
|
|||
Is dat niet gewoon met insertRowsAtIndexPaths:withRowAnimation: en daarbij een indexPath meegeven met een row=0?
|
#3
|
|||
|
|||
Bij het weergeven van een tablelist kan je de data uit willekeurige bronnen halen. Als je b.v de nieuwe items aan het begin van je array toevoegd en die array gebruikt om je tablelist weer te geven al de list ook zo eruit zien als de array die je gebruikt.
|
#4
|
|||
|
|||
Ik heb nog niet helemaal voorelkaar wat ik wil.
Ik heb nu een timer die om de 30 secondes een API call doet naar m'n server en daar een NSDictionary van terug krijgt. Dit voeg ik toe aan een NSArray, die dus steeds groter wordt, en deze NSArray wordt ook gebruikt om de table te vullen. Na het bijvoegen in de NSArray roep ik de tableView reloadData aan, en de tableView wordt ververst/nieuwe cellen komen onderin. Ik zit er dus mee dat de volgorde totaal niet klopt, want hij zet de nieuwe records telkens onderin erbij. Doe ik een reverseObjectEnumerator op de data die ik terug krijg om de volgorde om te keren dan klopt er ook niks van omdat de nieuwe results dan ene keer onderop , daarna weer bovenop toegevoegd worden. Bestaat er niet een methode om gewoon een losse cell zo pats, bovenin de table te plaatsen? Want met reloadData wordt het natuurlijk op een gegeven moment reeete traag als je em maar blijft vullen. |
#5
|
|||
|
|||
|
#6
|
|||
|
|||
Hier ben ik inmiddels ook al eventjes mee aan het stoeien, maar heb het nog niet werkend..
dit is wat ik doe, _messagesList is een NSMutableDictionary Code:
NSDictionary *messages = [result objectForKey:@"results"]; for (NSDictionary *message in messages) { [_messagesList addObject: message]; [[self tableView] insertRowsAtIndexPaths:[NSDictionary dictionaryWithObjects:[NSIndexPath indexPathForRow:[_messagesList count]-1 inSection:0]]]; } |
#7
|
||||
|
||||
weet je zeker dat de _messagesList geen NSCFDictionary is? Of in iedergeval niet nil is?
|
#8
|
|||
|
|||
|
#9
|
|||
|
|||
_messagesList heb ik nu een NSMutableArray van gemaakt, omdat NSMutableDictionary volgens mij niet helemaal goed werkte met addObject e.d.
Code:
_messagesList = [result objectForKey:@"results"]; NSMutableArray *insertIndexPaths = [[NSMutableArray alloc] init]; for (NSUInteger i = 1; i <= [_messagesList count]; ++i) { [insertIndexPaths addObject:[NSIndexPath indexPathForRow:(i-1) inSection: 0]]; } [self.tableView beginUpdates]; [self.tableView insertRowsAtIndexPaths:insertIndexPaths withRowAnimation: UITableViewRowAnimationRight]; [self.tableView endUpdates]; [insertIndexPaths release]; 'Invalid update: invalid number of rows in section 0. The number of rows contained in an existing section after the update (20) must be equal to the number of rows contained in that section before the update (20), plus or minus the number of rows inserted or deleted from that section (20 inserted, 0 deleted).' Ik snap er werkelijk waar niks meer van. Ik neem letterlijk methodes over uit examples / stukken source uit andere apps, maar krijg het niet werkend. Laatst gewijzigd door Graaf; 22-07-09 om 23:08. |
#10
|
|||
|
|||
Zo te zien voert ie bij het toevoegen een [tableview reloadData] uit ofzo. Hij roept dan opnieuw je
Code:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section Waarschijnlijk geeft deze nog je oude waarde terug (het aantal rows voor het toevoegen). Deze moet je dus ook even ophogen (tellertje bijhouden ofzo?). EDIT: typefoutjes
__________________
Software Engineer iPhone Developer |
#11
|
|||
|
|||
Ik heb even snel een voorbeeldappje gemaakt, mss kan je dat helpen...
|
#12
|
|||
|
|||
Sorry, beetje offtopic:
Ik kan zelf PHP en het is best wel grappig om te zien wat jullie maken. Het gekke is, ik snap wel wat er gebeurd enzo en wat je doet maar als ik het zelf moest maken had ik geen idee waar te beginnen. |
#13
|
|||
|
|||
Het is allemaal gelukt uiteindelijk. Thanx guys.
Ben met paar dingen maar even opnieuw begonnen, de afgelopen nacht doorgewerkt tot vanmorgen uurtje of 10 en het prototype van m'n nieuwe app is klaar Het probleem lag denk ik uiteindelijk met het doorgelkaar halen van NSMutableDictionary en NSMutableArray schat ik zo... |
Er zijn 1 actieve gebruikers die momenteel deze discussie bekijken (0 leden en 1 gasten) |
|
Soortgelijke discussies |
||||
Discussie | Auteur | Forum | Reacties | Laatste bericht |
Table Connect for the iPhone | vmaxbeast | iPhone algemeen | 1 | 05-11-10 23:10 |
NSTimer in Table View | Tim14ww | Ontwikkelen voor iOS | 3 | 17-10-09 13:11 |
Windows: Geen top free en top paid apps meer | McNessie | iTunes | 4 | 21-10-08 09:40 |
|
|