从表中获取单元格的文本

时间:2012-10-28 15:31:52

标签: objective-c xcode uitableview

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];

}

在这种情况下,您会在选择任何一行时收到提醒信息。

非常感谢。

1 个答案:

答案 0 :(得分: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键从标签拖动到界面部分,Xcode将提示您创建插座;让我们将这个新属性命名为myLabel。按住Ctrl键从按钮拖动到实现部分,让Xcode创建一个触摸按钮时要调用的方法。我们将其命名为labelTextUpdate,并将arguments设置为none。 Xcode将创建该方法,因此在其中插入此代码。

self.myLabel.text = self.selectedCellText;

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

当然,这提供了我没有忘记任何事情,因为这是来自记忆。我鼓励您阅读有关Objective-C和iOS / Mac OS开发的任意书籍之一,并阅读Apple的文档。


我测试了它,它的工作原理。这是结果。

UITableView Usage Example

我也意识到有一种更好的方法,没有文本属性或委托方法didSelectRowAtIndexPath。在按钮方法中,只需查询您的表视图以获取当前选定的单元格,询问其标签,然后获取其文本并将其应用于您的标签。它应该只采用一行或两行代码,而且不那么容易混淆。