1

ViewController 具有表格视图、一个按钮和标签。我的任务:选择任何行,然后按下按钮,所选行中的文本必须出现在标签中。我应该怎么做?

我已经做了熟悉的代码:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

{
    UIAlertView *messageAlert = [[UIAlertView alloc]
                                    initWithTitle:@"Row Selected" message:@"You've selected a row" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];`

    [messageAlert show];

}

在这种情况下,一旦您选择了任何行,您就会收到一条警报消息。

非常感谢。

4

1 回答 1

2

- (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,并设置argumentsnone。Xcode 将创建该方法,因此将此代码插入其中。

self.myLabel.text = self.selectedCellText;

你完成了!每当用户触摸表格时,属性都会更新为单元格中包含的标签文本。当用户触摸按钮时,labeltextUpdate被调用并且用户界面中的标签被更新为我们属性中的文本,这将是他们之前选择的单元格中包含的任何文本。

当然,前提是我没有忘记任何事情,因为这是凭记忆。我鼓励你阅读任何一本关于 Objective-C 和 iOS/Mac OS 开发的书籍,并通读 Apple 的文档。


我测试了它,它可以工作。这是结果。

UITableView 使用示例

我还意识到有一种更好的方法可以做到这一点,无需 text 属性或委托方法didSelectRowAtIndexPath。在按钮方法中,只需查询您的表格视图以获取当前选定的单元格,询问其标签,然后获取其文本并将其应用于您的标签。它应该只需要一两行代码,并且不会令人困惑。

于 2012-10-28T16:02:53.080 回答