如何将自定义uitableviewcell一一附加到uitableview

Posted

技术标签:

【中文标题】如何将自定义uitableviewcell一一附加到uitableview【英文标题】:How to append custom tableviewcells to tableview one by one 【发布时间】:2019-11-25 10:36:39 【问题描述】:

我有两个 tableview 控制器,比如说 PopoverElementsListTable ,ElementsViewTable。当我单击一个 PopoverElementsListTable 单元格时,一个 tableview 将处于弹出状态,一个自定义单元格必须添加到 ElementsViewTable。当我尝试将另一个单元格添加到 ElementsViewTable 时,我只能附加一个单元格,它被前一个单元格替换.

#pragma mark - TableView delegate

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:
(NSInteger)section
    if (tableView == PopoverElementsListTable) 
        return  [myArray count];
    
    else if (tableView == ElementsViewTable) 
       return 1;

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:
(NSIndexPath *)indexPath
    if (tableView == PopoverElementsListTable) 
        static NSString *cellId = @"autoaddress";
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:
                                 cellId];
        if (cell == nil) 
            cell = [[UITableViewCell alloc]initWithStyle:
                    UITableViewCellStyleDefault reuseIdentifier:cellId];
        
        cell.textLabel.text = [myArray objectAtIndex:indexPath.row];
        return cell;
    else 
        NSLog(@"_selectedIndex %lu",(unsigned long)_selectedIndex);
        if(_selectedIndex == 1)
            AutoFillAddressFormElementcell * cell = [tableView dequeueReusableCellWithIdentifier:@"autoAddressCell"];
            if (!cell) 
                cell = [[AutoFillAddressFormElementcell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"autoAddressCell"];
            
            return cell;
        else if(_selectedIndex == 2)
            NSLog(@"Test @ 123");
            AddressSetterFormElementCell * cell = [tableView dequeueReusableCellWithIdentifier:@"setAddressCell"];
            if (!cell) 
                cell = [[AddressSetterFormElementCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"setAddressCell"];
            
            return cell;
        else
                static NSString *cellId = @"autoaddress";
                UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellId];
                if (cell == nil) 
                    cell = [[UITableViewCell alloc]initWithStyle:
                            UITableViewCellStyleDefault reuseIdentifier:cellId];
                
                cell.textLabel.text = @"List";
                return cell;
            
        
   


-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:
(NSIndexPath *)indexPath
    if(tableView == PopoverElementsListTable)
        [tableView deselectRowAtIndexPath:indexPath animated:YES];
        UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
        NSLog(@"Section:%ld Row:%ld selected and its data is %@",
              (long)indexPath.section,(long)indexPath.row,cell.textLabel.text);
        [_transarentView setHidden:true];
        _selectedIndex = indexPath.row + 1;
        NSLog(@"number %lu",(unsigned long)_selectedIndex);
       [_displayFromElementTableView reloadData];
    
    if(tableView == ElementsViewTable)

    


我知道我只能附加一项,因为 numberOfRowsInSection 委托中的返回 1。我尝试用另一个数字替换,但我得到的是所有单元格都是相同的。我怎样才能在这里获得动态计数?如何一一追加不一样的自定义单元格。

【问题讨论】:

【参考方案1】:

您需要通过识别 indexpath 来做到这一点。

if (indexPath.row == 0) 
    Customcell1 *cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath];
else if (indexPath.row == 1)
    Customcell2 *cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath];

return cell;

等等.... 如果需要,您也可以查看表格视图。

【讨论】:

以上是关于如何将自定义uitableviewcell一一附加到uitableview的主要内容,如果未能解决你的问题,请参考以下文章

将自定义 UITableViewCell 与 ViewCellRenderer 一起使用时出现 NullReferenceException

将自定义 UITableViewCell 从 nib 加载到 Swift 中的 UIViewController

如何将自定义sql附加到Spring Data JPA插入/更新

如何将自定义单元格连接到 UIViewController?

如何将自定义数据从ui-router中的视图传递到某个状态?

将自定义视图附加到 Android 键盘的顶部