我正在尝试创建类似于在iOS中添加/编辑联系人的视图,但有一些事情正在发生,我不确定它们是如何实现的。非常感谢任何理解方面的帮助。
对于联系人中的每个部分,即姓名,电话号码,电子邮件等,这些都是他们自己的桌面视图,还是这些部分在更大的桌面视图中?
在添加或编辑联系人时单击完成后,未使用的tableview单元格将消失。这是使用deleteRowsAtIndexPaths:withRowAnimation:
还是有一种我找不到的隐藏方法?如果它正在使用该方法,那么当单击编辑联系人按钮时,视图如何带回这些未使用的tableview单元格?
在编辑联系人时单击tableview单元格中的单元格时,您可以更改文本。这是tableview单元格中的文本字段还是实际修改tableview单元格的标签?
我不是在寻找任何特定的代码,作为一个相当新的程序员,我只是想了解实现这些功能的策略/最佳方法。
答案 0 :(得分:1)
我尝试了很多不同的方法来实现它。最简单的一个:子类UITableViewCell并覆盖setFrame:
。请注意,这对于分组表很容易实现,但对于普通表很难实现。在数据源的tableView:cellForRowAtIndexPath:
中为第一部分创建此自定义单元格的对象。为该部分的单元格使用另一个标识符,以便只重用正确的单元格。
是的,我认为。控制器具有某种定义,在编辑模式下必须显示多少个单元格,以及实际使用多少单元格的信息。您可以轻松创建必须删除的indexPath数组。
我会在tableView:didSelectRowAtIndexPath:
中通过tableView:cellForRowAtIndexPath:
获取单元格,隐藏标签并取消隐藏或添加文本字段并成为第一个响应者。
代码为1。
单元格
@interface InsetCell : UITableViewCell
@property(nonatomic)CGFloat inset;
@end
@implementation InsetCell
- (void)setFrame:(CGRect)frame {
CGFloat inset;
if (_inset == 0) {
inset = 70; //default value
} else {
inset = _inset;
}
frame.origin.x += inset;
[super setFrame:frame];
}
-(void)setInset:(CGFloat)inset
{
_inset = inset;
[self setNeedsLayout];
}
@end
使用类似代码的项目