2014-01-14 21 views
1

我无法从所选表格单元中获取唯一数据。我点击的每个单元格似乎都会传递相同的数据。任何建议我在这里做错了什么?在segue期间无法传递唯一数据

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 

    if ([segue.identifier isEqualToString:@"MallToVendor"]) { 
     MingieAdvertisementIndividualViewController *destViewController = segue.destinationViewController; 
     NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow]; 
     destViewController.mallName = [[advertisements objectAtIndex:indexPath.row] name]; 
    } 
} 
+0

可以传递独特的数据作为'发件人'你在哪里调用' - (void)performSegueWithIdentifier:(NSString *)identifier发件人:(编号)发件人' –

+0

你可以尝试NSLog'[[advertisementsObjectsAtIndex:indexPath.row]名称]位,看看他们是否真的每行打印不同的数据? –

+0

尝试使用NSIndexPath * indexPath = [self.tableView indexPathForCell:sender]其中sender是单元格 – giorashc

回答

1

代替使用indexPathForSelectedRow,在didSelectRowAtIndexPath方法保存选择indexpath.row整数变量prepareForSegue使用它。

如果您使用indexPathForSelectedRow它将始终返回第一行的indexpath

希望这会有所帮助!

0

在@implementation文件

@property(nonatomic) int indexOfSelectedRow; 

定义这个属性在你didSelectROwAtIndexPath方法做到这一点

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

    self.indexOfSelectedRow=indexPath.row; 


} 

而在你prepareForSegue方法,做这 -

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([segue.identifier isEqualToString:@"MallToVendor"]) 
    { 
    MingieAdvertisementIndividualViewController *destViewController=segue.destinationViewController; 
    destViewController.mallName = [[advertisements objectAtIndex:self.indexOfSelectedRow] name]; 
    } 
}