2010-04-22 86 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

相关问题