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 中的多个原型单元,带有部分的主要内容,如果未能解决你的问题,请参考以下文章