以编程方式调用推送选择并准备选择方法 [英] Invoking push segue programmatically and prepareforsegue method
本文介绍了以编程方式调用推送选择并准备选择方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在以编程方式调用push segue
I'm invoking push segue
programmatically as below
UIStoryboard *mainStoryBoard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UIViewController *vc = [mainStoryBoard instantiateViewControllerWithIdentifier:@"addToCartViewContollerForItem"];
[self.navigationController pushViewController: vc animated:YES];
但是我的问题是我想将带有此序列的一些信息发送到目标ViewController.但是- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
方法根本没有被触发.
but my problem is I want to send some info with this segue to the destination viewcontroller. But the method - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
is not getting fired at all.
这是prepareforsegue方法
this is how the prepareforsegue method
- (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];
}
}
我在这里想念什么?
推荐答案
从您的didSelectRowAtIndexPath
方法调用performSegueWithIdentifier
:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[self performSegueWithIdentifier:@"addToCartSegue" sender:self];
}
- (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];
}
}
在Swift 2.3中
//MARK: didSelectRowAtIndexPath
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
performSegueWithIdentifier("addToCartSegue", sender: self)
}
// MARK: - Navigation
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
// Get the new view controller using segue.destinationViewController.
if segue.identifier == "addToCartSegue" {
let selectedIndexPath = self.tableView.indexPathForSelectedRow
let currentItem: Item = itemList[selectedIndexPath.row]
if let viewcontroller = segue.destinationViewController as? RESTAddToCartViewController {
viewcontroller.currentItem = currentItem
}
}
}
快捷键3
//MARK: didSelectRowAtIndexPath
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
performSegue(withIdentifier: "addToCartSegue", sender: self)
}
// MARK: - Navigation
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "addToCartSegue" {
if let selectedIndexPath = self.tableView.indexPathForSelectedRow {
let currentItem: Item = itemList[selectedIndexPath.row]
if let viewcontroller = segue.destination as? RESTAddToCartViewController {
viewcontroller.currentItem = currentItem
}
}
}
}
这篇关于以编程方式调用推送选择并准备选择方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文