iOS视图类似于添加/编辑联系人

时间:2013-04-02 22:42:17

标签: ios objective-c cocoa-touch

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

  1. 对于联系人中的每个部分,即姓名,电话号码,电子邮件等,这些都是他们自己的桌面视图,还是这些部分在更大的桌面视图中?

  2. 在添加或编辑联系人时单击完成后,未使用的tableview单元格将消失。这是使用deleteRowsAtIndexPaths:withRowAnimation:还是有一种我找不到的隐藏方法?如果它正在使用该方法,那么当单击编辑联系人按钮时,视图如何带回这些未使用的tableview单元格?

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

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

1 个答案:

答案 0 :(得分:1)

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

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

  3. 我会在tableView:didSelectRowAtIndexPath:中通过tableView:cellForRowAtIndexPath:获取单元格,隐藏标签并取消隐藏或添加文本字段并成为第一个响应者。


  4. 代码为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