如何从按钮单击获取UITableview cell.textlabel.text值?

时间:2011-09-16 19:01:56

标签: iphone

我是iphone开发的新手。

我正在开发一个我有UItableview的项目,我在每一行都放了一个按钮。 现在我的UItableView有一个cell.textlabel,detailLabel和一个以编程方式放置的按钮。

在cell.textlabel中我有一些来自json的值(每个标签都有不同的值),就在每行的右下角,我放了一个按钮。

现在我只想按下按钮的那行的cell.textlable.text值。

我为每个按钮获得相同的值。 所以,我的问题是,如何获取按下按钮的特定行的labeltext值?

4 个答案:

答案 0 :(得分:2)

在创建标签期间为您的按钮添加标签,例如button1.tag = 9999; 在按钮单击操作中,抓住按钮作为发件人

-(void)buttonaction:(UIButton*)sender
{
UITableViewCell * selectedCell = nil;
for(UITableViewCell *cell in [tableView visibleCells])
{
  if([cell viewWithTag:9999] == sender)
  {
     selectedCell = cell;
     break;
  }
}
//do whatever you like with selected cell now.
}

我希望它有所帮助!!!

答案 1 :(得分:2)

像这样解决:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:  (NSIndexPath *)indexPath {



static NSString *CellIdentifier = @"Cell";

cell = [self.tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];

    UIButton *tableCellButton = [[UIButton buttonWithType:UIButtonTypeRoundedRect]retain];
    tableCellButton.frame = CGRectMake(200, 1, 80, 20);
    [tableCellButton setTitle:@"showing" forState:UIControlStateNormal];
    [tableCellButton addTarget:self action:@selector(shortcutBottonClicked:) forControlEvents:UIControlEventTouchUpInside];
    [cell addSubview:tableCellButton];



}   NSDictionary *listing = [ self.temp objectAtIndex:indexPath.row];
cell.textLabel.text = [listing  objectForKey:@"0"];




return cell;

}

-(IBAction) shortcutBottonClicked:(id)sender{

  //this code solved the problem
 indexPath = [self.tableView indexPathForCell:(UITableViewCell*)[sender superview]];

mlsid2 = [self.tableView cellForRowAtIndexPath:indexPath].textLabel.text;
}

答案 2 :(得分:1)

我认为你的意思是表格中的每一行都有一个按钮,可以按下任意数量的按钮。在用户完成按行按钮后,您需要获取已按下哪些数据行。

如果我读到你的身份,那么除非你的桌子是静态的,否则它将起到以下作用:

您需要拥有类似我假设您拥有的UITableview数据源的数据结构。例如,一个NSArray充满了NSNumber对象,一个对应于每行数据。当按下一行中的按钮时,相应的NSNumber设置为1.当您需要时,只需遍历NSNumber的NSArray就可以知道表格数据源中按下按钮的相应行。

有一点需要注意的是,您在UI中看到的UItableview单元格通常会在用户滚动时重复使用 - 如果您的表具有可变数量的数据和行,则至少会出现这种情况(与静态),所以你不能依赖UI元素,比如按钮,来记住状态

答案 3 :(得分:1)

在第一个视图中.h文件

@

class viewController;
#import <UIKit/UIKit.h>


@interface firstViewController : UITableViewController<UITableViewDelegate, UITableViewDataSource> {

    NSString *_cellTitle;


}

@end

在didSelectRowAtIndex方法中首先查看.m文件,添加此代码,如

viewController *detailViewController = [[viewController alloc]     initWithNibName:@"viewController" bundle:nil];       

NSInteger row = [indexPath row];
_rowTitle = [_detailList objectAtIndex:row];

detailViewController._barTitle = _rowTitle ;

或者您可以在buttonPressed方法

中执行此操作

然后在第二个视图.h部分 -

@interface viewController : UIViewController {
   NSString *_barTitle;
}

@property (nonatomic, retain) NSString *_barTitle;

@end

在实现部分中合成此属性 在.m和viewDidLoad方法下

self.navigationItem.title = _barTitle;

不要忘记导入第二个视图.h文件

希望这会有所帮助