【问题标题】:iOS view similar to add/edit contactiOS 视图类似于添加/编辑联系人
【发布时间】:2013-04-02 22:42:17
【问题描述】:
我正在尝试创建一个类似于在 iOS 中添加/编辑联系人的视图,并且正在发生一些事情,我不确定它们是如何实现的。非常感谢任何有助于理解的帮助。
对于联系人中的每个部分,例如姓名、电话号码、电子邮件等,它们是各自的 tableview 还是更大的 tableview 中的这些部分?
在添加或编辑联系人时单击完成时,未使用的表格视图单元格会消失。这是使用deleteRowsAtIndexPaths:withRowAnimation: 还是我没有找到隐藏方法?如果是使用那个方法,那么当点击编辑联系人按钮时,视图是如何带回这些未使用的tableview单元格的呢?
在编辑联系人时单击表格视图单元格中的单元格时,您可以更改文本。这是表格视图单元格中的文本字段还是实际上修改了表格视图单元格的标签?
我不是在寻找任何特定的代码,作为一个相当新的程序员,我只是想了解实现这些功能的策略/最佳方式。
【问题讨论】:
标签:
ios
objective-c
cocoa-touch
【解决方案1】:
我尝试了很多不同的方法来实现它。最简单的一个:子类 UITableViewCell 并覆盖setFrame:。请注意,这对于分组表很容易实现,但对于普通表则很难。在数据源的tableView:cellForRowAtIndexPath: 中为第一部分创建此自定义单元格的对象。对该部分的单元格使用另一个标识符,以便仅重用正确的单元格。
是的,我假设。控制器有某种定义,在编辑模式下必须显示多少个单元格,以及多少个单元格实际用于某种信息。您可以轻松创建必须删除的 indexPaths 数组。
我会在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
使用类似代码的项目