如何以编程方式从不同的视图设置cell.textLabel.text?

时间:2010-04-22 11:54:33

标签: iphone cocoa-touch uitableview

我有一个视图控制器,称之为VC1,这是一个表格视图。当我在表格视图中点击一个单元格时,我会看到一个新的视图控制器,称之为VC2,这是一个简短的选择列表。做出选择之后,我想解除VC2并将我最初使用的VC1单元格的cell.textLabel.text属性设置为我在VC2中选择的值。

从概念上讲,执行此操作的正确方法是什么?我尝试了一些不同的方法,但是它们看起来都很简单,只有其中一个实际工作 - 尽管它是最麻烦的,传递对视图控制器和表视图单元的引用和各种的东西。感觉就像是在一个可能是鼹鼠山的山上。

这是一种常见的范例,我觉得很难相信没有一种简单的方法可以做到这一点。

2 个答案:

答案 0 :(得分:1)

有很多方法可以解决这个问题,但最灵活的方法之一是通过委托模式。在VC2的接口中定义委托协议,然后使VC1符合该协议。当您创建VC2时,将VC1指定为委托(类似于您对UITableView的处理方式)。您的协议的一个要求应该是didFinishWithStringSelection:(或任何您称之为)的方法,您将更新表格单元格reloadTable

答案 1 :(得分:0)

我通过表视图呈现数据对象的几个属性来实现这一点。要更改单个属性,用户必须选择显示他想要更改的属性的特定表格单元格,这将推送一个新的视图控制器(在我的情况下使用选择器),用户可以从选择中更改值。

在推送之前,我将数据对象分配给新控制器的属性。使用此值可以直接在数据对象中更改,当我(通过导航控制器)返回到第一个视图控制器时,viewWillAppear中有一个reloadData。

你有这样的尝试吗?