我是iphone开发的新手。
我正在开发一个我有UItableview的项目,我在每一行都放了一个按钮。 现在我的UItableView有一个cell.textlabel,detailLabel和一个以编程方式放置的按钮。
在cell.textlabel中我有一些来自json的值(每个标签都有不同的值),就在每行的右下角,我放了一个按钮。
现在我只想按下按钮的那行的cell.textlable.text值。
我为每个按钮获得相同的值。 所以,我的问题是,如何获取按下按钮的特定行的labeltext值?
答案 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文件
希望这会有所帮助