如何更新UITableViewCell中添加的视图?

时间:2015-07-18 06:49:43

标签: ios objective-c uitableview

我在做什么?

我正在为我的UITableViewCell添加动态视图(不是子类)。

单元格层次结构:

UITableView> UITableViewCell> cell.contentView> MainView> ([Number Of PointView] + [Options View])

这是:

enter image description here

当用户点击"添加另一个点"时,我将添加一个PointView(与上面相同):

Y位置[ ] X位置[ ]

这将是这样的,

enter image description here

我完成这项工作的逻辑是什么?

  • 我从MainView开始cell.contentView
  • 然后将最后两个视图(点视图和选项视图)添加到MainView中。
  • PointView中添加另一个MainView
  • 根据上一个PointView更新新添加的PointView的框架,并更新OptionsView的框架。
  • 调整MainView
  • 的高度
  • 重新加载特定的单元格。

我能够让它工作,以确认我已记录MainView的框架和子视图。但是,一旦我点击了#34;添加另一个点"再次按下按钮,我发现MainView根本没有更新?

我的简单问题是,如果我有一个MainView(我从Cell获取),我可以直接更新吗?

P.S。我已经有一个穷人解决方案,要删除MainView并重新创建新的 - 我发现这是不必要的。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

简短回答,是的,你可以。

cell.contentView是一个占位符。你可能遇到的是一个完全不同的问题:UITableViewCells被缓存,然后被系统回收和重用。

每当您回复cellForRowAtIndexPath时,您基本上都需要重置内容。

答案 1 :(得分:1)

我想你应该做些什么。只需创建一个单元格类enter image description here

这另外一个细胞亚类

enter image description here

使用此方法插入行并更新表视图的数据源,即部分

中的行数

点击方法中的 +按钮可以是这样的..

//Use your own logic what you want to do.
Update your data source
NSIndexPath* index=[NSIndexPath indexPathForRow:[table count]-1 inSection:0];

NSMutableArray* indexPathArray=[[NSMutableArray alloc]init];
[indexPathArray addObject:index];

//index will be your new added point cell. Updating your    datasource

[_myTableView insertRowsAtIndexPaths:indexPathArray
                    withRowAnimation:UITableViewRowAnimationTop];

使这个是

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
// Return YES if you want the specified item to be editable.
return YES;

}