问题
I'm loading an RSS feed into a table view. I'm going to load 10 entries and then would like it say "Load More" in the last cell or somewhere below the last cell, so when the user clicks on Load More, the rest of the RSS feed gets loaded. Since the RSS comes off of my web site, I can program it to get the 10 or all entries on the server side (using a query string or something).
The question is how to render a table such that the last cell has a Load More link that the can clicked to call a method to load the rest of the feed (and then when the entire feed is loaded there is no more "Load More" link).
回答1:
Check this: UITableView rows load asynchronously
回答2:
Due to the way that UITableView's work (i.e.: they request cells/cell content as required) what's the value in the 'load more' link? (Especially as you'll presumably need to load the RSS feed in its entirely anyway.)
In other words, shouldn't the act of the user scrolling the table view be sufficient?
It's also potentially a bit confusing from a User Interface perspective - would having a "load more" at the bottom load older posts or newer posts? Where would these posts appear? At the top of the view or the bottom? (I'm presuming that you're ordering the cells in "most recent first" order, as this probably makes sense if you're consuming a feed.)
Update
However, if you really want to do this I'd suggest initially making your data source only tell the UITableView that it has "n"+1 elements, the +1 being a cell that contains your "load more" text. (You could format the cell to look different, using the backgroundView method, etc. on the UITableViewCell you supply.)
When the user selects this final cell you'll need to capture this as per usual, work out if it's the fake "load more" cell and if so, tell the data source that it should reveal all of its contents to the UITableView. Then you can simply get the table view to reload itself (via the reloadData method) and all should be well.
来源:https://stackoverflow.com/questions/4410257/load-more-in-uitableview