在UITableView的didSelectRow之前调用Storyboard segue

Moh*_*gab 5 storyboard tableview didselectrowatindexpath ios

我有一个故事板,其中包含来自表格单元格的segue.我想在选择行时使用某些数据设置一些属性,所以我执行以下操作:

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [[ProperyManager sharedPropertyManager]setSelectedRow:[verseIds objectAtIndex:indexPath.row]];
    [[ProperyManager sharedPropertyManager]setID:[poemIDs objectAtIndex:indexPath.row]];
    [[ProperyManager sharedPropertyManager]setRowToReturn:[NSString stringWithFormat:@"%i",indexPath.row]];


}
Run Code Online (Sandbox Code Playgroud)

问题是,目标视图控制器的视图控制器生命周期方法(viewWillAppear等)在上面的didSelectRow方法之前被调用,因为segue在执行委托方法之前推送视图.

我怎么能绕过这个?

Raw*_*ode 14

不要将Cell从Cell创建到新VC,而是将Segue从旧VC设置为新VC并为segue指定标识符.

然后在内

didSelectRowAtIndexPath 你可以打电话

[self performSegueWithIdentifier:@"Segue" sender:self]


jrt*_*ton 14

Rawkode的回答是一个很好的解决方案-另一种是,在prepareForSegue:,你可以访问表视图(的选定行sender参数将是表视图单元格,然后你可以做[self.tableView indexPathForCell:(UITableViewCell*)sender],以获得索引路径),并设置任何你需要在那时候.