2017-12-18 13 views
-1

3つのカスタム(Xib)セルを持つUITableviewがあります。私は静的にcellForRowAtIndexPathに各セルをロードしました。各セルには、次の行に新しい行を挿入するための追加ボタンが含まれています。私は新しい行を挿入すると、期待されたセルの代わりに別のXibセルが表示され、また新しい行がすべてのセクションに追加されます。Objective Cで解決するには?
注:UITableviewの指定されたインデックスパス行に新しい行を挿入すると競合が発生する

1)静的にロードされた細胞。

2)しかし、セルを動的に挿入する。

3)numberOfRowsInSectionメソッドでは、配列(NSMutableArray)カウントを使用して指定された行数です。

-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ if (indexPath.row==0) 
{ 
    CustomCellA *aCell = [tableView dequeueReusableCellWithIdentifier:@"ACell"]; 
    return aCell; 
} else if(indexPath.row==1) 
{ 
    CustomCellB *bCell = [tableView dequeueReusableCellWithIdentifier:@"BCell"]; 
    return bCell; 
}else 
{ 
    CustomCellC *cCell = [tableView dequeueReusableCellWithIdentifier:@"CCell"]; 
    return cCell; 
} 
} 
-(void)insertNewACell:(UIButton *)addButton atIndexPath:(NSIndexPath *)addBtnIndexPath 
{ 
newArray = [[NSMutableArray alloc]init]; 
[newArray addObject:@"XXXX"]; 
[newArray addObject:@"YYYY"]; 
[newArray addObject:@"YYYY"]; 
[sectionRowItems addObject:newArray]; 
[sectionRowItems insertObject:newArray atIndex:addBtnIndexPath.row]; 
[self.numericTable reloadData]; 
} 
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
return alphabetArray.count 
} 

答えて

0

その他の部分にはCustomCellCが設定されています。したがって、セルindexpath.rowが1より大きい場合、新しいセルを追加すると、CustomCellC

すべてのセクションで同じ配列を使用できますか。したがって、配列numberOfRowsInSectionに新しいオブジェクトを挿入すると、すべてのセクションに同じカウントが返されます。そこにはすべてのセクションに新しい行が追加されます。

あなたはセクションごとに異なる配列を設定しても、このような特定のセクションの行数を設定することができます。

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ 

    if (section == 0){ 
     return arr.count; 
    }else if (section == 1{ 
     return arr1.count; 
    } 

    return arr2.count; 
} 

-(void)insertNewACell:(UIButton *)addButton atIndexPath:(NSIndexPath *)addBtnIndexPath 
{ 

    newArray = [[NSMutableArray alloc]init]; 
    [newArray addObject:@"XXXX"]; 
    [newArray addObject:@"YYYY"]; 
    [newArray addObject:@"YYYY"]; 

    if(addBtnIndexPath.section) 
    [arr addObject:newArray] 
    }else if(addBtnIndexPath.section){ 
    [arr1 addObject:newArray] 
    }else{ 
    [arr addObject:newArray] 
    } 
+0

は、セクションを管理するためのご提案をいただき、ありがとうございます。バディー私は上記のように私は新しい行を挿入するときどのようにcellForRowAtIndexPathを管理します。 –

+0

私は答えのようにnumberOfRowsInSectionのような条件を適用できます。 –

+0

申し訳ありませんが、すべてのセクションで同じセルが必要な場合は、cellForRowAtIndexPathに変更を加える必要はありません。 –

関連する問題