2013-04-02 42 views
2

我想創建一個類似於在iOS中添加/編輯聯繫人的視圖,並且發生了一些事情,我不確定它們是如何實現的。任何幫助理解是非常感謝。iOS視圖類似於添加/編輯聯繫人

  1. 對於接觸每個部分,即姓名,電話號碼,電子郵件等都是這些每一個自己的tableview或者是一個更大的tableview內這些板塊?

  2. 當添加或編輯聯繫人時單擊完成時,未使用的tableview單元格消失。這是使用deleteRowsAtIndexPaths:withRowAnimation:還是有隱藏方法,我還沒有找到?如果它正在使用該方法,那麼當單擊編輯聯繫人按鈕時,視圖如何回收這些未使用的tableview單元格?

  3. 在編輯聯繫人時單擊tableview單元格中的單元格時,可以更改文本。這是一個文本字段內的tableview單元格,還是它實際上修改tableview單元格的標籤?

我不找任何特定代碼,作爲一個相當新的程序員,我只是想了解的策略來實現這些功能/最佳途徑。

回答

1
  1. 我嘗試了很多不同的方法來實現它。最簡單的一個:子類UITableViewCell並覆蓋setFrame:。請注意,對於分組表很容易實現,但對於普通表來說很難。在數據源的tableView:cellForRowAtIndexPath:中爲第一部分創建此自定義單元格的對象。爲該部分的單元格使用另一個標識符,以便只有正確的單元格纔會被重新使用。

  2. 是的,我認爲。控制器具有某種定義,在編輯模式下必須顯示多少個單元格,以及實際上有多少單元格用於某種信息。您可以輕鬆創建必須刪除的indexPath數組。

  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

+0

我可以希望得到的最佳答案。謝謝! – badger0053

相關問題