2013-01-01 122 views
0

我正在做一個類似的視圖查看聯繫人在Contacts.app,這意味着我有不同的領域不需要(第二個工作電話,第二封電子郵件等)不同部分(電話,電子郵件等)。不顯示空的分組單元tableview

當某些字段是空的,我不想顯示它們,當所有的字段下部分空,我不想顯示該節。此外,有些單元對它們有操作,就像在電話號碼單元上敲擊時一樣,它會調用顯示的號碼。目前,這些操作在didSelectRowAtIndexPath中手動處理,具有基本ifs,具體取決於單元位置。

我不能找到一個很好的解決方案做了這一切......我嘗試字典數組(每個單元),每個部分,但事情很快就亂了。另外,由於行的順序絕不相同,我不能輕易地用if來處理基於單元位置的didSelectRowAtIndexPath方法中的所有操作。

哦,我在引擎蓋下使用核心數據。

任何人都必須做同樣的事情,並願意分享他的想法嗎?

謝謝!使用indexPath區分風格和行爲

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 

    if (indexPath.section == 0) 
    { 
     // Custom actions here 
    } 
    else if (indexPath.section == 1) 
    { 
     // Other actions here 
     [self showMailComposeWithEmail:cell.textLabel.text]; 
    } 
} 

而另一種方法:

現在我的靜態IFS設置的爲例分化細胞

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"Cell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

    if (!cell) 
    { 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier]; 
    } 

    if (indexPath.section == 0) 
    { 
     if (indexPath.row == 0) 
     { 
      cell.textLabel.text = self.contact.phone; 
     } 
    } 
    else if (indexPath.section == 1) 
    { 
     if (indexPath.row == 0) 
     { 
      cell.textLabel.text = self.contact.email; 
     } 
    } 

    return cell; 
} 
+0

你可以展示在其中添加數據的代碼 – Dhara

+0

你怎麼從那裏我添加數據意味着什麼? – allaire

+0

您是否將數據添加到數組或字典? – Dhara

回答

1

拿一本字典,當你添加對象該字典確保其中的數據不是空白。它添加數據字典如下鍵值:

Phones - key 0^0 (it means at 0 section 0 row) 
WorkPhone - key 0^1(it means at 0 section 1st row) 
Emails - key1^0 (1 section 0th row) and so on... 

而在cellForRowAtIndexPath取這個值作爲

[dict valueForKey:[NSString stringWithFormat:@"%d^%d",indexPath.section,indexPath.row]]; 

希望這就是明確的。

+0

感謝您的回答。幾個問題:你會怎麼做'numberOfRowsInSection:'和'numberOfSectionsInTableView:'方法。另外,'cellForRowAtIndexPath:'和'didSelectRowAtIndexPath:'中有ifs,你將如何區分單元格,因爲我不能再依賴indexPath了(現在如果手機是空的並且不顯示等,那麼電子郵件可以是第一個等等。 )。查看我編輯的答案,瞭解我當前的一些代碼。謝謝! – allaire

+0

如果您可以根據編輯的答案添加更多代碼,我會立即接受該答案,我非常感謝您的時間,謝謝。 – allaire

+0

當然,我可以幫助你。但是,你能告訴我你在哪裏以及如何填充聯繫數組中的數據。 – Dhara