uitableview 中的多个原型单元,带有部分

Posted

技术标签:

【中文标题】uitableview 中的多个原型单元,带有部分【英文标题】:Multiple prototype cell in uitableview with section 【发布时间】:2015-12-28 12:20:43 【问题描述】:

我是 ios 新手,我正在开发 uitableview 单元格。我想以下列方式实现uitableview。 Expected Result

这是一节。 假设数组有 3 个条目,而不是应该出现 3 个相似的部分。

我正在使用 NSUserDefaults 存储数据。 所以首先将所有数据提取到 NSMUtableArray 中。数组中的数据存储为,假设 UserInfo 是我的数组:

["raj","test1","test2","Mon"], ---- 第一行

["tiya","test3","test2","Tues"], ----- 第二行

["niha","test1","test5","Wens"] ------- 第三行

如何使用 uitableTable 视图实现上述功能

【问题讨论】:

我建议您创建一个原型单元格,其中包含其中的所有字段,而不是一个具有单独的测试、名称和日期行的部分。 我想要一个单独的行,因为单击每一行时它应该打开编辑视图例如。如果用户点击第一行而不是编辑视图来编辑用户名如果​​点击第二行而不是 test1 编辑视图打开 有一种更简单的方法可以做到这一点。当用户点击一个单元格时,将用户带到一个新的视图控制器,他可以在其中编辑任何特定单元格中包含的信息。 在我看来,这样做会更方便、更合适。 所以你的意思是说,而不是 4 个原型单元,应该只有一个具有所有选项的原型单元 【参考方案1】:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
  
    // Return the number of sections.
     return Array.count;
   

   - (NSInteger)tableView:(UITableView *)tableView   numberOfRowsInSection:(NSInteger)section
     
          // Return the number of rows in the section.
        return 1;
      


     - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
       


     static NSString *CellIdentifier = @"cell";
     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

   UILabel *name = (UILabel*)[cell.contentView viewWithTag:1];
   UILabel *test1 = (UILabel*)[cell.contentView viewWithTag:2];
   UILabel *test2 = (UILabel*)[cell.contentView viewWithTag:3];
   UILabel *day = (UILabel*)[cell.contentView viewWithTag:4];  
     name.text = @"raj";
     test1.text = @"test1";
     test1.text = @"test2";
     day.text = @"Mon";
     return cell;



   

【讨论】:

什么是cell.name?它是标签的 IBOutlet 如果是这样,如何将它连接到 IBOutlet,因为如果我尝试连接,则会收到以下错误:从 TableViewController 到 UILabel 的 lblName 出口无效。插座不能连接到重复的内容。【参考方案2】:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
  
    retune 1;
   
    - (NSInteger)tableView:(UITableView *)tableView   numberOfRowsInSection:   (NSInteger)section
 
           // Return the number of rows in the section.
      return [your array count];
     

- (UITableViewCell *)tableView:(UITableView *)tableView 
   cellForRowAtIndexPath:(NSIndexPath *)indexPath
         

      static NSString *CellIdentifier = @"cell";
      UITableViewCell *cell = [tableView   dequeueReusableCellWithIdentifier:CellIdentifier];
     if (cell == nil)  
   cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero   reuseIdentifier:CellIdentifier]];
   

   // alloc label for different rows
     if(indexpath.row==0)
     cell.lbl.text = @"raj";
    cell.lbltest1.text = @"test1";
    cell.lbltest2.text = @"test2";
     cell.lblday.text = @"Mon";
   

   if(indexpath.row==1)
 
     cell.lbl.text = @"tiya";
     cell.lbltest1.text = @"test3";
     cell.lbltest1.text = @"test2";
     cell.lblday.text = @"Tues";

else if(indexpath.row==2)
 
 cell.lbl.text = @"niha";
 cell.lbltest1.text = @"test1";
 cell.lbltest1.text = @"test5";
 cell.lblday.text = @"Wens";

 return cell;

【讨论】:

【参考方案3】:

这里有个小提示:

 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
      
         return [yourArray count];
      

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
       
            for(int i=0; i<[yourArray count];i++)
       

        if (indexPath.section == i)
        
                titleForCell=[yourArray objectAtIndex:i]//test i
                descriptionForCell=[yourArray objectAtIndex:i];// time i
        
            cell.textLabel.text=titleForCell;
            cell.detailTextLabel.text=descriptionForCell;
       
    return cell;
    

【讨论】:

以上是关于uitableview 中的多个原型单元,带有部分的主要内容,如果未能解决你的问题,请参考以下文章

具有多个 UITableView(s) 的相同原型单元格

如何从具有多个单元格原型的 UITableView 中捕获单元格数据?

带有标题部分的插入分组 UITableView

具有原型单元格、部分的复杂 UITableView

带有集合视图的 UITableView 单元格

带有静态单元格的 UITableView - 每个部分的分隔颜色不同?