自定义表格视图单元格与按钮

时间:2015-09-03 06:16:54

标签: ios objective-c storyboard

我正在使用故事板。我有一个带有1个Prototype单元格的表格视图,并且在表格视图中有四行。每个单元格都有标签,图像视图和按钮。现在我想在每次按下按钮时在下一个View Controller上显示不同的数据(DetailsVc)。 Row1-按钮单击将打开DetailsVC并包含一些数据。 Row2-按钮单击将打开DetailsVC,其中包含不同的数据。 和剩余行的相同过程。 任何建议。

@implementation DetailsVC

- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
EmpEngmntTableViewCell *emp;

 if((emp.viewGalleryBtn.tag = 1))
{
    NSLog(@"tag num for 1st row is %ld",(long)emp.viewGalleryBtn.tag);
    self.title = @"Team Building Session";
}
}

3 个答案:

答案 0 :(得分:1)

最好的方法是使用委托模式。我添加了答案here,您可以使用它作为示例。

这是一个附带的例子:

自定义单元格.h类:

@protocol DetailVCProtocol <NSObject>
-(void)loadDetailScreenWithIndex:(NSInteger)rowIndex;
@end

@property (nonatomic, retain) id<DetailVCProtocol> delegate;
@property (nonatomic, retain) IBOutlet UIButton *btn;

然后在.m文件中合成它

m文件

中添加此项
-(IBAction)loadDetails:(id)sender
{
    // ..... blah blah
    [self.delegate loadDetailScreenWithIndex:btn.tag];
}

加载此单元格的viewcontroller:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
   // create cell here

   cell.btn.tag = indexPath.row;
   cell.delegate = self;
}

-(void)loadDetailScreenWithIndex:(NSInteger)rowIndex
{
  // Cretae DetailVC with parameter `rowIndex` to populate data
  [self presentViewController:detailVC animated:YES completion:nil];
}

答案 1 :(得分:-1)

在函数- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

使用此代码

cell.btn.tag = indexPath.row;
[cell.btn addTarget:self action:@selector(btnTpd:) forControlEvents:UIControlEventTouchUpInside];

- (IBAction)btnTpd:(id)sender
{
UIButton *btn = (UIButton *)sender;
\\You can get which button is pressed by btn.tag
    \\Here call to next ViewController and pass data
}

答案 2 :(得分:-1)

在cellForRowAtIndexPath

 cell.optionsBtn.tag=indexPath.row;
 [cell.optionsBtn addTarget:self action:@selector(showMyOptionBtn:) forControlEvents:UIControlEventTouchUpInside];

-(void)showMyOptionBtn:(UIButton *)sender
{
  EventDetailViewController *EventDetail=[[EventDetailViewController alloc]init];
  EventDetail.buttonTag=sender.tag;
  [self.navigationController pushViewController:EventDetail animated:NO];

 }

In EventDetailViewController class

   if (self.buttonTag==1) {
     // your condation
   }
   else
   {
    //your condation
   }