在下面的代码中,我只是尝试直接UIViewController
从DetailViewController
. 我通常从UITableViewCell
(我认为更清楚)做segue,但这次我只是想尝试直接从ViewController
using-tableView:didSelectRowAtIndexPath:
我的问题是:我遇到了需要UITableViewCell
indexPath
从-prepareForSegue:sender:
我的解决方案中访问的情况是发送indexPath
via sender
。通常我会将 sender 设置在self
这里,我环顾四周,找不到任何参考,我只是好奇使用 sender 传递 indexPath 是否可以接受?我很确定是这样,而且我确信我以前在某个地方读过你可以,但我现在找不到任何参考。
// ------------------------------------------------------------------- **
// DELEGATE: UITableView
// ------------------------------------------------------------------- **
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
NSLog(@"%s", __PRETTY_FUNCTION__);
[self performSegueWithIdentifier:@"SEGUE_TWO" sender:indexPath];
}
// ------------------------------------------------------------------- **
// SEGUE: ViewController_ONE > DetailViewController
// ------------------------------------------------------------------- **
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
NSLog(@"%s", __PRETTY_FUNCTION__);
if([[segue identifier] isEqualToString:@"SEGUE_TWO"]) {
NSUInteger cellRow = [(NSIndexPath *)sender row];
DetailViewController *destinationController = [segue destinationViewController];
[destinationController setDataString:[[self dataList] objectAtIndex:cellRow]];
}
}
编辑:在这种情况下我正在寻找的是
NSIndexPath *indexPath = [[self tableView] indexPathForSelectedRow];
本质上是一种无需通过 sender 参数 (in )即可indexPath
进入的方式-performForSegue:sender:
-performSegueWithIdentifier:sender: