如何在单击特定单元格时将tableview单元格的数据显示给另一个viewcontroller?

时间:2015-02-12 06:16:04

标签: ios objective-c uitableview

我是iOS开发的新手。我正在构建一个基本项目,我有两个视图控制器。在其中一个我有一个tableView,在另一个我有一个标签和一个文本字段。在tableview中我采用了一个自定义单元格,并且我已经采用了两个标签。在那两个标签中我分配了两个数组。现在我想将这两个数组的数据显示到另一个视图控制器的标签和文本字段。所以我想知道在方法didSelectRowAtIndexPath中编写什么代码。

这是我所做的代码。

#import "TabViewController.h"

@interface TabViewController ()

@end

@implementation TabViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    self.peoplenames = @[@"Soumen Da" ,@"Debu Da" ,@"Sandipan Da" ,@"Pradipta Da" ,@"Sandeep Da" ,@"Pran Da" ,@"Amit Da" ,@"Piyali Di" ,@"Niladri Da" ,@"Biswa Da", @"Soumitra Da" ,@"Utpal Da", @"Sandip Da"];

    self.peopleaddress = @[@"Santragachhi" ,@"Kolkata" ,@"Shambazar" ,@"Jadavpur" ,@"Saltlake" ,@"New Town" ,@"Beleghata" ,@"Garia" ,@"Barakpur" ,@"Naihati" ,@"Agarpara" ,@"Sodpur" ,@"Park Street"];
}

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

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell1"];


    UILabel *lbl1 = (UILabel*)[cell.contentView viewWithTag:2];
    lbl1.text = [self.peoplenames objectAtIndex:indexPath.row];
    NSLog(@"row===%ld",(long)indexPath.row);

    UILabel *lbl2 = (UILabel*)[cell.contentView viewWithTag:1];
    lbl2.text = [self.peopleaddress objectAtIndex:indexPath.row];
    NSLog(@"row===%ld",(long)indexPath.row);

    return cell;

}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{

    [self performSegueWithIdentifier:@"detail" sender:self];

}


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{

    return [self.peoplenames count];


}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end
  

块引用

2 个答案:

答案 0 :(得分:0)

您可以将表格单元格中的segue放到下一个视图控制器中,而不需要在- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath.中执行任何操作

在具有表视图的第一个视图控制器中使用- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender并访问segue.destinationViewController.label和segue.destinationViewController.label.textField以将值传递给第二个视图控制器。

答案 1 :(得分:0)

如果您想在didSelectRowAtIndexPath中执行以下操作:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
 UIStoryboard *sb=[UIStoryboard storyboardWithName:@"Main" bundle:nil];
        DetailViewController *vc=(DetailViewController *)[sb instantiateViewControllerWithIdentifier:@"detail"];
        vc.label.text =[self.peopleaddress objectAtIndex:indexPath.row];
vc. textfield.text =[self.peopleaddress objectAtIndex:indexPath.row];

}