识别在故事板应用程序中单击的单元格

时间:2015-03-09 12:13:01

标签: ios objective-c iphone uitableview storyboard

如何识别已单击的单元格。此后,我想要存储在该行中的记录,并导航并显示另一个viewcontroller的值。

这是我正在使用的故事板应用程序,所以你能告诉我如何从中完成它。

之前,我使用以下方法识别单击的单元格,然后通过使用indexPath我能够获取已选择的记录,以便我可以导航到另一个viewcontroller。

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

如何在故事板环境中执行此操作。我正在使用segue进行导航。

3 个答案:

答案 0 :(得分:1)

您希望使用sender参数来获取单元格,然后使用对tableView的引用来获取indexPath。在这个例子中,我使用self.tableView:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    UITableViewCell *cell = (UITableViewCell *)sender;
    NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];
    // Get model object related to index path and pass it to next VC
}

答案 1 :(得分:0)

你真的有两个选择。

1)在storyboard中创建单元格和目标视图控制器之间的segue。单击该单元格时,这将自动导致segue触发。

2)做你正在做的事情并使用performSegueWithIdentifier自己调用segue。在这种情况下,您需要在故事板中将segue从源控制器绘制到目标控制器。

在这两种情况下,您都需要使用目标控制器要显示的数据在prepareForSegue中设置目标控制器。理想情况下,使您的单元格具有属性,这些属性可以是数据模型的索引,也可以是对表中视图的数据的引用。

在方法1)中,发件人将是prepareForSegue中的单元格。在方法2)中,发件人将是您在info:参数中传递的任何内容。

答案 2 :(得分:-1)

you have to set a segue from your firstVc to second VC 
Then do
//In your secondVc.h
@property (weak, nonatomic)  UILabel *someLabel;
//In firstViewController.m
in didselectRowAtIndexPath call
[self performSegueWithIdentifier:@"seguename" sender:nil];
and add this method
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if([[segue identifier] isEqualToString:@"segueName"]){
    NSIndexPath *indexPath = [tablename indexPathForSelectedRow];
   secondViewController *destViewController = segue.destinationViewController;
    destViewController.someLabel = [arrayName objectAtIndex:indexPath.row];
}