我只想澄清,'設計'是指軟件設計,而不是UI設計。設計和管理類似於設置的iPhone應用程序的有效方法
我有一個類似於原生設置應用程序的應用程序。我遇到的問題是它不遵循同樣明確的MVC風格。其他應用程序傾向於關注顯示某種事物。以週期表應用爲例,它是元素。這些元素明確地包含了模型,並且它們具有相似的屬性和行爲,這意味着它們可以以相同的方式顯示和交互。像這樣的應用程序幾乎設計自己!
我的應用程序與設置應用程序一樣,由任意選擇的行以不同方式顯示不同數據組成。一行可能包含一個開關,另一行可能在模擬時呈現非常特定的視圖。他們都非常不同。
你怎麼設計這樣的東西?
目前,我做這一切在視圖控制器,以及相關的行正在通過枚舉追蹤:
enum {
kNameRow,
kGenderRow,
kJobTypeRow,
kLevelOfExerciseRow,
kEmailAddressRow,
kTelephoneNumberRow
};
正如我所描述的,這些細胞都非常不同,所以顯示細胞是這樣處理的:
// - tableView:cellForRowAtIndexPath pseudocode.
switch (indexPath.row) {
case kNameRow: // create name cell.
case kGenderRow: // create gender cell.
case kJobTypeRow: // create job type cell.
case kLevelOfExerciseRow: // create level of exercise cell.
case kEmailAddressRow: // create email address cell.
case kTelephoneNumberRow: // create telephone number cell.
}
並與細胞的相互作用也同樣處理:
// - tableView:didSelectRowAtIndexPath pseudocode.
switch (indexPath.row) {
case kNameRow: // do name-specific stuff.
case kGenderRow: // do gender-specific stuff.
case kJobTypeRow: // do job type-specific stuff.
case kLevelOfExerciseRow: // do level of exercise-specific stuff.
case kEmailAddressRow: // do email address-specific stuff.
case kTelephoneNumberRow: // do telephone number-specific stuff.
}
這看起來非常笨重,並且在表格分解成多個部分時增加了不工作的問題。
有沒有更好的方法來做到這一點?在處理大量不相關數據的大表時,是否有任何設計模式會受益?
任何提示都非常讚賞。
這是一些體面的代碼和一個有趣採取如何管理這樣的應用程序。不幸的是,它只支持標準的「字段」,比如文本輸入,廣播選擇列表等等。我的應用做了其他很多特定的事情,所以我不能真正使用它。我正在尋找的是設計無限可擴展應用程序的一般技巧,該應用程序以非常不同的方式處理顯示無關數據的任意數量的行。 – 2010-08-10 09:11:24