我有一个包含一些文本的tableview,我在tableviewcell里面有一个标签作为子视图,在标签中还有一些值。我的问题是,当我点击要获取标签值的单元格时,我知道如何在单击单元格时获取单元格值,但我需要获取标签值,我获取表格单元格值的代码是
NSString *localStringValue;
localStringValue = [tableView cellForRowAtIndexPath:indexPath].textLabel.text;
我将其显示在textview textview.text = self.localStringValue;
中
我的标签名称是chapterandverse,我需要实现此标签而不是textlabel.text
。
我添加localStringValue = [tableView cellForRowAtIndexPath:indexPath].chapterandverse.text;
但是这个代码我得到了错误。请帮我这样做。
提前谢谢。
答案 0 :(得分:2)
有两种主要方法可以做到这一点:
您可以为chapterandverse
标签指定tag
值。在Interface Builder中,在同一页面上有一个Tag属性,您可以在其中设置其他属性,如Text。如果您是以编程方式进行的,chapterandverse.tag = 1;
。然后,您需要通过标记值引用标签,例如:
localStringValue = [(UILabel *)[[tableView cellForRowAtIndexPath:indexPath]
viewWithTag:1] text];
您可以通过@property
引用自定义表格视图单元格类中的标签来实现此目的。您似乎已经尝试过这样做,但请注意,如果您致电[cell addSubview:chapterandverse]
而不意味着您可以稍后说cell.chapterandverse
。为了使其正常工作,您需要创建UITableViewCell
的子类并向其添加以下声明:
@property (nonatomic, retain) IBOutlet UILabel *chapterandverse;
然后在单元格的.m
文件中合成它:
@synthesize chapterandverse;
然后,您可以将放置在Interface Builder中的标签连接到视图上的chapterandverse
插座,并按照cell.chapterandverse
的方式引用它。但是,如果以编程方式创建它,则需要在使用之前初始化UILabel
:
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if(self != nil)
{
CGRect labelFrame = CGRectMake(x, y, width, height); // set this properly
self.chapterandverse = [[UILabel alloc] initWithFrame:frame];
[self.view addSubview:self.chapterandverse];
}
return self;
}