2011-10-30 136 views
2

我需要幫助弄清楚如何創建一個單元格,如iphone聯繫人應用程序中表示地址的單元格。我不想創建一個地址。我只需要知道如何顯示在編輯模式下:如何創建像iphone聯繫人地址單元的UITableViewCell?

  1. 左側(如UITableViewCellStyleValue2)文本
  2. 灰線分隔左右
  3. 內容右手在自定義格式 - 根據我想要在這裏展示的不同高度,我將有不同的格式。

任何示例代碼,蘋果示例(雖然我找不到),教程或一般指導非常感謝。我試圖避免必須創建一個自定義容器類來處理左側的所有內容,並根據我想要放在正確的內容動態調整大小。當然有人已經這樣做了,對嗎? :)

編輯模式是這樣的:Contacts Address Edit

+0

你能分解你的想法嗎? – user501836

回答

4

你必須創建自己的UITableVIewCellSubclass,這並不像你想象的那麼難。

基本上你只需要在分隔符之間添加2個UITextField和一個UIImageView。

我建議你看看蘋果的TableView編程指南,特別是A Closer Look at Table-View Cells

你有一個代碼示例非常相似,你想達到的目標。這裏是思想(未測試的代碼):

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    static NSString *CellIdentifier = @"ImageOnRightCell"; 

    UITextField*main, *second; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 
     cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton; 

     main = [[[UITextField alloc] initWithFrame:CGRectMake(0.0, 0.0, 220.0, 15.0)] autorelease]; 
     main.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleHeight; 
     [cell.contentView addSubview:main]; 

     second = [[[UITextField alloc] initWithFrame:CGRectMake(220.0, 0.0, 220.0, 15.0)] autorelease]; 
     second.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleHeight; 
     [cell.contentView addSubview:second]; 

    } 

    return cell; 
} 

希望這有助於 文森特

+0

是的,我在另一個項目中劃分了許多單元格。我擔心我不得不在這裏走這條路,但希望有人能夠完成額外的工作。 ;)我沒有做過自動調整大小,所以這真的很有幫助。 – thephatp

+0

不適合我。 –

1

我只是做了這樣的事情。我的解決方案是相當具體到我的數據,但一般來說這是我做的:

  1. 左手側的文本是垂直居中的UILabel
  2. 右手邊是一個UITableView
  3. 「123僞造街「會進入UITableViewCell子類,該子類將UITextField引入內容視圖。
  4. 「我的城市」和「ST」會進入一個單獨的UITableViewCell子類,它必須引入UITextField。我實際上做了一個UITextFieldSubclass,它可以控制要繪製哪些邊界(即drawLeftBorder = YES)。
  5. 您必須決定何時調整大小,但基本上在右側添加行,然後在父級表視圖上調用begin/endUpdates塊。確保父級表視圖實現了heightForRowAtIndexPath,並根據數據返回正確的值。
+0

我沒有想過使用表格視圖。如果你需要這種精細的控制,這是有意義的。我要去其他路由,因爲我可以重用另一個項目的代碼,但表格視圖的想法很有趣。感謝您的意見。 – thephatp

+0

您如何處理問題中顯示的屏幕截圖中可點擊的國家,並調出另一個ViewController來選擇國家/地區。具體來說,是用戶點擊一個按鈕,點擊標籤,可點擊的UIView或...? –

+0

這是一個UITableView,所以在委託中只實現'didSelectRowAtIndexPath'。 – sosborn

相關問題