2010-04-22 82 views
0

我有一個視圖控制器,稱之爲VC1,這是一個表視圖。當我在表格視圖中點擊一個單元格時,我會看到一個新的視圖控制器,稱之爲VC2,這是一個簡短的選擇列表。做出選擇後,我想關閉VC2並將VC1單元格的cell.textLabel.text屬性設置爲原來在VC2中選定的值。如何以編程方式設置cell.textLabel.text從不同的視圖?

從概念上講,做這件事的正確方法是什麼?我嘗試了幾種不同的方法,但是它們看起來好像都不太好,只有其中一個實際上工作 - 雖然它是最麻煩的,但是將視圖控制器和表格視圖單元以及各種的東西。它只是感覺我正在從可能是一座痣山的山上出山。

這是一個常見的範例,我覺得很難相信沒有一個簡單的方法來做到這一點。預先感謝您提供的任何輸入。

回答

0

我這樣做與表視圖呈現數據對象的幾個屬性。要更改單個屬性,用戶必須選擇特定的表格單元格,以顯示他想要更改的屬性,並且會推送一個新的視圖控制器(在我的情況下爲選擇器),用戶可以在其中更改選擇的值。

在推送之前,我將數據對象分配給新控制器的屬性。有了這個值可以直接在數據對象中更改,當我通過導航控制器返回到第一個視圖控制器時,在viewWillAppear中有一個reloadData。

你試過這種方式嗎?

+0

'reloadData'部分是我失蹤的部分;當我補充說,世界再次合適。 謝謝! – Andy 2010-04-29 21:01:59

1

有很多方法可以解決這個問題,但最靈活的方法之一是通過委託模式。在VC2的界面中定義委託協議,然後使VC1符合該協議。當您創建VC2時,將它指派給VC1(類似於您使用UITableView的方式)。你的協議的一個要求應該是一個像didFinishWithStringSelection:(或任何你稱之爲)的方法,在那裏你將更新表格單元格和reloadTable

相關問題