【发布时间】:2013-12-31 19:31:11
【问题描述】:
我正在以编程方式调用push segue,如下所示
UIStoryboard *mainStoryBoard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UIViewController *vc = [mainStoryBoard instantiateViewControllerWithIdentifier:@"addToCartViewContollerForItem"];
[self.navigationController pushViewController: vc animated:YES];
但我的问题是我想用这个 segue 向目标视图控制器发送一些信息。但是- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 方法根本没有被触发。
prepareforsegue方法就是这样
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller.
NSLog(@"segue from deals screen");
//addToCartViewContollerForItem
if([[segue identifier] isEqualToString:@"addToCartSegue"]){
NSIndexPath *selectedRow = [[self tableView] indexPathForSelectedRow];
Item *currentItem = [[Item alloc]init];
currentItem = [itemList objectAtIndex:[selectedRow row]];
RESTAddToCartViewController *vc = [segue destinationViewController];
[vc setCurrentItem:currentItem];
}
}
我在这里缺少什么?
【问题讨论】:
-
你希望segue发生在哪个动作上,比如取消按钮动作或uitableview单元格选择?
-
uitableview 单元格选择。我使用
didSelectRowAtIndexPath -
您可以在您编写的代码中直接使用没有 didSelectRow 方法的 prepareForSegue 方法,也可以从您的 didSelectRow 方法中调用 perform segue,查看我的答案。
-
我认为主要的困惑在于帖子的第一行。该导航控制器推送不执行推送转场。正如@suhit 建议的那样,self performSegueWithIdentitifer 就是这样做的方法。
-
@dahn 说得对,UINavigationController pushViewController 不执行 push segue,最好的方法是 performSegueWithIdentitifer 和 prepareForSegue: 方法。
标签: ios iphone objective-c uistoryboard segue