我在做什么?
我正在为我的UITableViewCell
添加动态视图(不是子类)。
单元格层次结构:
UITableView
> UITableViewCell
> cell.contentView
> MainView
> ([Number Of PointView] + [Options View])
。
这是:
当用户点击"添加另一个点"时,我将添加一个PointView(与上面相同):
Y位置[ ]
X位置[ ]
这将是这样的,
我完成这项工作的逻辑是什么?
MainView
开始cell.contentView
。MainView
中。PointView
中添加另一个MainView
。PointView
更新新添加的PointView
的框架,并更新OptionsView
的框架。MainView
我能够让它工作,以确认我已记录MainView
的框架和子视图。但是,一旦我点击了#34;添加另一个点"再次按下按钮,我发现MainView
根本没有更新?
我的简单问题是,如果我有一个MainView
(我从Cell获取),我可以直接更新吗?
P.S。我已经有一个穷人解决方案,要删除MainView
并重新创建新的 - 我发现这是不必要的。有什么想法吗?
答案 0 :(得分:1)
简短回答,是的,你可以。
cell.contentView
是一个占位符。你可能遇到的是一个完全不同的问题:UITableViewCells
被缓存,然后被系统回收和重用。
每当您回复cellForRowAtIndexPath
时,您基本上都需要重置内容。
答案 1 :(得分:1)
我想你应该做些什么。只需创建一个单元格类
这另外一个细胞亚类
使用此方法插入行并更新表视图的数据源,即部分
中的行数点击方法中的 +按钮可以是这样的..
//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;
}