类似于添加/编辑联系人的 iOS View

标签 ios objective-c cocoa-touch

我正在尝试创建一个类似于在 iOS 中添加/编辑联系人的 View ,并且发生了一些事情,但我不确定它们是如何实现的。非常感谢任何有助于理解的帮助。

  1. 对于联系人中的每个部分,即姓名、电话号码、电子邮件等,这些部分是各自的表格 View 还是在更大的表格 View 中?

  2. 在添加或编辑联系人时单击“完成”时,未使用的表格 View 单元格会消失。这是使用 deleteRowsAtIndexPaths:withRowAnimation: 还是有我没有找到的隐藏方法?如果是用那个方法,那么当点击编辑联系人按钮时,view是如何把这些未使用的tableview cells取回来的?

  3. 在编辑联系人时单击表格 View 单元格中的单元格时,您可以更改文本。这是表格 View 单元格中的文本字段,还是实际上修改了表格 View 单元格的标签?

我不是在寻找任何特定的代码,作为一个相当新的程序员,我只是想了解实现这些功能的策略/最佳方法。

最佳答案

  1. 我尝试了很多不同的方法来实现它。最简单的一个:继承 UITableViewCell 并覆盖 setFrame:。请注意,这对于分组表很容易实现,但对于普通表很难。在数据源的 tableView:cellForRowAtIndexPath: 中,为第一部分创建此自定义单元格的对象。为该部分的单元格使用另一个标识符,以便仅重复使用正确的单元格。

  2. 是的,我认为是。 Controller 有某种定义,有多少单元格必须在编辑模式下显示,以及有多少单元格实际用于某种信息。您可以轻松地创建一个必须删除的 indexPaths 数组。

  3. 我会在 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

一个使用类似代码的项目
screenshot insetcell

关于类似于添加/编辑联系人的 iOS View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15775730/

相关文章:

ios - 如何反序列化 json 对象并分配给 iOS 中的 NSDictionary

ios - 从解析中检索到的数据顺序

ios - NSRegularExpression,指定区分大小写匹配?

ios - 无法在属性初始值设定项中使用实例成员 'server'

iOS应用程序更新过程

objective-c - 检查 NSString 是否包含来自不同 NSString 的字符

c++ - 在不同的线程上发送和接收

ios - 在 NSTimer 中调用 AFNetworking 导致严重的内存泄漏

iOS:使用 xib 的自定义 View

cocoa-touch - 想要使用 UISwipeGesture 在 NSArray 中的图片之间平滑过渡或滑动