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

问题描述 投票:0回答:2

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

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

这是一个如此常见的范例,我发现很难相信没有一种简单的方法可以做到这一点。

iphone cocoa-touch uitableview
2个回答
0
投票

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

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

你这样试试吗?


1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.