我有一个从Json Feed中填充的tableview,行号各不相同。我想要做的是每隔X行插入一个广告。因此,例如,如果Feed返回23行,那么在第5,10,15和20行,我想插入一个包含广告的行。
目前我没有显示代码,因为我真的不知道解决此问题的最佳方法。我预计的一个问题是我添加的行与Json feed的源不同,我认为这可能会导致新行出现问题,因为我不想直接修改数据源,或者至少我认为我不。
任何帮助表示感谢。
答案 0 :(得分:2)
将NSMutableArray作为插入后者的对象。
int numberofrows;
NSMutableArray *objectsToDisplay;
UITableView *tbleView;
刚刚制作了简单的表格视图,如下所示: -
- (void)viewDidLoad
{
tbleView=[[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 400) style:UITableViewStylePlain];
tbleView.delegate=self;
tbleView.dataSource=self;
objectsToDisplay=[[NSMutableArray alloc] initWithObjects:@"A ",@"B",@"C",@"D",@"E",@"F",@"G",@"H",@"I",@"J",@"K",@"L",@"M",@"N",@"O",@"P",@"Q",@"R",@"S",@"T",@"U",@"V",@"W",@"X",@"Y",@"Z",nil];
numberofrows=[objectsToDisplay count];
[self.view addSubview:tbleView];
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return numberofrows;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *mycell=[tbleView dequeueReusableCellWithIdentifier:@"cellIdentifier"];
if (mycell==nil) {
mycell=[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cellIdentifier"];
}
mycell.textLabel.text=[objectsToDisplay objectAtIndex:indexPath.row];
return mycell;
}
要在每5个索引后插入行,请使用此方法
-(IBAction)InsertAdvertizes:(id)sender
{
for (int i=4;i<numberofrows;i=i+5) {
[objectsToDisplay insertObject:@"Hello I am Advertize" atIndex:i];
}
NSLog(@"object is %@",objectsToDisplay);
[tbleView reloadData];
}
您的表格看起来像下面显示的图像:---
答案 1 :(得分:0)
使用
tableView: numberOfRowsInSection
设置行的大小
columnsToAdd = round(json.objects.count/5)
return json.objects.count+columnsToAdd
然后在
tableView: cellForRowAtIndexPath
返回您的objectColumns或adColumn
when indexPath.row Modulo 5 != 0 => return yourJsonObjectColumns
else => return yourAdColumn
我认为这是有道理的。如果您有一些代码,我会再次帮助您。