例如,我有3篇文章,当我展示文章时,我想在第一篇文章之前再显示一个单元格(总共4篇)。
我需要显示第一篇不在数组中的文章,然后显示数组中的文章。
更新
我接下来试过了:
- (NSInteger)tableView:(
UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return ([arr count] + 1);
}
但我的应用程序有时会崩溃,我看到NSLOG然后该应用程序在调用[tableView reloadData]之前进入cellForRowAtIndexPath。
答案 0 :(得分:2)
这是你不应该做的事情。
好吧,您可以通过返回一个视图(来自-tableView:cellForRowAtIndexPath :)来欺骗框架,该视图将包含2个子视图:您的“第一篇文章”单元格和原始的第一个单元格;不要忘记修改-tableView:heightForCellAtIndexPath :(否则你的视图会被删除)。
但总的来说,你应该改变表视图后面的数据模型以显示4个单元 - 这只是一种更有效的方法。
答案 1 :(得分:1)
你可以这样做:
使用此方法返回其他行:
// Each row array object contains the members for that section
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [YouArray count]+1;
}
最后检查此添加的行:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
// Create a cell if one is not already available
UITableViewCell *cell = [self.mContactsTable dequeueReusableCellWithIdentifier:@"any-cell"];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"any-cell"] autorelease];
}
//Identify the added row
if(indexpath.row==0)
{
NSLog(@"This is first row");
}
else{
// Write your existing code
}
}
答案 2 :(得分:1)
您需要使用insertObject
[arr insertObject:[NSNull null] atIndex:0];
并实施以下方法:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [arr count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
if([arr onjectAtIndex:indexPath.row] == [NSNull null])
{
// 1st cell extra cell do your stuff
}
return cell;
}
答案 3 :(得分:0)
你把所有文章都放在一个数组中吗?您也应该将新文章添加到数组中。数组是您的数据源。我认为如果您希望将新文章作为第一个元素插入到顶部单元格中,则需要将其作为第一个元素插入。一旦更新了数组,就应该调用[mytableView reloadData]
来触发所有要调用的数据源方法并重新加载表的数据。