在- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
检索返回值[[[tableView cellForRowAtIndexPath:indexPath] textLabel] text]
并将其存储在属性中。因此,每次用户更改所选单元格时,您的属性都会更新为当前所选单元格的文本。然后,为按钮创建一个方法并将其连接起来。当按钮被按下时,将界面中标签的文本值设置为属性。
@interface
在顶部的内部部分(它在 .h 文件中),放这个。
@property (nonatomic, copy) NSString* selectedCellText;
在这个@implementation
部分(它在 .m/.mm 文件中)里面放这个。
@synthesize selectedCellText = _selectedCellText;
您现在有一个实例变量_selectedCellText
,您可以使用两种方法访问它。这称为属性。使用[self setSelectedCellText]
("setter") 设置它,使用[self selectedCellText]
("getter") 获取值。或者,使用点符号,这将为您完成(self.selectedCellText
始终引用它)。当然self
只能在内部使用;如果另一个对象有一个指向这个实例的指针,你会使用它而不是self
.
对于- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
,这样做。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
self.selectedCellText = [[[tableView cellForRowAtIndexPath:indexPath] textLabel] text];
}
现在,在任何给定时间(前提是您已正确设置表格)self.selectedCellText
将包含当前选定单元格的文本。所以,连接一个UILabel和UIButton,让按钮通过目标动作调用一个方法。如果您使用笔尖/故事板,请将它们拖到您的界面中。ctrl-drag 从标签到助手编辑器中的界面部分,Xcode 将提示您创建一个插座;让我们命名这个新属性myLabel
。ctrl-drag 从按钮到实现部分,让 Xcode 创建一个在按钮被触摸时调用的方法。让我们命名它labelTextUpdate
,并设置arguments
为none
。Xcode 将创建该方法,因此将此代码插入其中。
self.myLabel.text = self.selectedCellText;
你完成了!每当用户触摸表格时,属性都会更新为单元格中包含的标签文本。当用户触摸按钮时,labeltextUpdate
被调用并且用户界面中的标签被更新为我们属性中的文本,这将是他们之前选择的单元格中包含的任何文本。
当然,前提是我没有忘记任何事情,因为这是凭记忆。我鼓励你阅读任何一本关于 Objective-C 和 iOS/Mac OS 开发的书籍,并通读 Apple 的文档。
我测试了它,它可以工作。这是结果。
我还意识到有一种更好的方法可以做到这一点,无需 text 属性或委托方法didSelectRowAtIndexPath
。在按钮方法中,只需查询您的表格视图以获取当前选定的单元格,询问其标签,然后获取其文本并将其应用于您的标签。它应该只需要一两行代码,并且不会令人困惑。