0

我目前正在研究iPhone應用程序的設置部分,並且我剛剛意識到如果設置中的每個頁面都有它自己的視圖和.h + .m,那將是很多不必要的代碼和視圖。所以我想出了這樣一個結論:我只有一種類型的細節視圖,這種視圖會根據用戶選擇的表視圖中的行進行更改。然而......我有點掙扎。基於以前的視圖的UITableView數據

的設置:

  • 對於主設置的看法,我想這是與多個團體和行的分組表視圖。
  • 對於設置細節視圖,我也希望它是一個具有多個組和行的分組表格視圖(這是令人困惑的地方)。

我已經看到簡單的東西,如圖像和標籤依賴於前一個視圖,但沒有分組的表視圖結構。如果沒有大量的觀點或「如果」陳述,是否有可能完成我想要的內容?任何形式的幫助都是有好處的。

回答

1

你必須做兩件事情(考慮到你有一個設置視圖控制器和一個詳細視圖控制器)...

首先,當用戶選擇在設置視圖控制器一排,你必須在詳細視圖控制器中設置您要編輯的設置。也就是說....

 
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    [self.detailViewCtrl setSetting:[self.settings objectAtIndex:indexPath.row]]; 
    [self.navigationController pushViewController:self.detailViewCtrl]; 
} 

在您的詳細視圖,你就必須修改以下方法來呈現你的表格:

 
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    // ... do something with the self.setting 
} 

而且你可別忘了重新加載表:

 
- (void)setSetting:(id)newSetting { 
    if (setting != newSetting) { 
    [setting release]; 
    setting = [newSetting retain]; 
    [self.tableView reloadData]; 
    } 
} 

這假設以下幾點:

  • 你的第一個視圖有「detailViewCtrl」屬性實例化
  • 你的第一個視圖具有的NSArray中設置的屬性稱爲「設置」
  • 您的詳細視圖有一個「設置」屬性
  • 您的詳細視圖控制器知道該怎麼辦與其「設置」屬性
+0

Z感謝您的迴應,但有一些地區的iPhone開發我仍然有點不清楚。通過設置屬性,你的意思是一個字符串?我是否還必須將設置和newSetting定義爲字符串? – 2011-03-05 12:39:25

+0

@安迪,'設置'應該是一個自定義對象(或設置包對象?)。我不確定它有什麼屬性,但它可能是這樣的:設置(名稱,類型,值,選項)。你應該考慮你將如何加載/存儲你的設置,以及你將如何操縱它們。 – Dimitry 2011-03-05 21:27:27

1

是的,這當然是可能的。蘋果公司基本上是通過plist文件與Settings bundle及其配置做到這一點。

你想寫的是一個通用的表格視圖控制器,從外部來源加載其配置和內容(一個或多個plist文件是一個非常好的選擇)。這並不難,至少只要您的表視圖執行的操作(例如,當用戶點擊一個單元格時)定義良好並且易於在配置文件中編碼。例如:「使用此配置打開新頁面」或「將此值保存到用戶默認值下」這樣的操作很容易設置,而像「讓用戶使用相機拍攝照片,然後讓它們裁剪它喜歡它並將其上傳到Twitter「更難。

+0

感謝您的迴應,但我不想使用設置包,因爲它會打敗應用程序的重點。 – 2011-03-04 23:14:35

+0

我明白這一點。但是Settings包使用其plist配置文件的方式可以向您展示一種自己實現此功能的可能方式。 – 2011-03-05 00:06:46

相關問題