gpt4 book ai didi

iphone - Storyboard prepareForSegue

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:12:26 24 4
gpt4 key购买 nike

我有一个关于 Storyboard转场的问题。平台是 iOS 6.1。目标设备是 iPhone。 IDE 是 Xcode 4.5.2。我拥有的是 2 个 TableViewController,它们都有一个到同一个 ViewController 的 segue(segOne 和 segTwo)。期望的结果是,当用户导航到此 ViewController 时,他们将返回到原始 TableViewController。为此,我需要一些方法将原始 segue(或 TableViewController)的 ID 传递给目标 ViewController。过去,我通过在 NavigationItem 中设置“后退”按钮来实现这一点,该按钮始终运行良好。但是,现在我想将后退按钮编码为单独的控件。

我知道要完成此操作,我需要在我已完成的源 TableViewControllers 中设置“prepareForSegue”方法。我遇到问题的地方是在 destinationViewControllers 中编写代码以编程方式识别两个 segue 中的哪一个是源 segue,segOne 或 segTwo?这两个 segue 在 Storyboard Seque 中被标识为“segOne”和“segTwo”。两者都是风格“推”转场,都是目的地“当前”转场。除了 segue id 之外,每个 TableViewController 实现文件都是相同的。这是我的代码:

头文件:

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

执行文件:

-(void)prepareForSegue:(UIStoryboardSegue*)segue sender:(id)sender
{
if([[segue identifier] isEqualToString:@"segOne"])
{
NSLog (@"TableViewController1: segue.identifier %@", segue.identifier);
NSLog (@"TableViewController1: self %@", self);
NSLog (@"TableViewController1: sender %@", (id)sender);
}
}

输出正是我所期望的。这是 TableViewController1:

TableViewController1: segue.identifier segOne
TableViewController1: self <TableViewController1: 0x928eb70>
TableViewController1: sender <UITableViewCell: 0x927a3e0; frame = (0 22; 768 44); text = ' 1. birth month and year...'; autoresize = W; layer = <CALayer: 0x928d380>>

因此,我需要的是 ViewController 的代码,用于识别两个转场 segOne 或 segTwo 中的哪一个是原始转场。我明白任何代码都需要进入目标 ViewController 的 viewDidAppear 方法。一旦我有了这个,在 ViewController 中编码 IBAction 以导航到原始 TableViewController 将是一件简单的事情。任何关于如何执行此操作的代码示例将不胜感激。谢谢...

最佳答案

当您使用导航 View Controller 推送 View Controller 时,它将被推送到 View Controller 堆栈的顶部。

因此,返回到前一个 View Controller 所需要做的就是弹出被推送的 View Controller 。

将其放入您的 IBAction 方法中:

[self.navigationController popViewControllerAnimated:YES];

现在,如果你真的想知道使用了什么 segue,你可以将 segue 标识符传递给目标 Controller ,并将它放在一个属性中,如下所示:


-(void)prepareForSegue:(UIStoryboardSegue*)segue sender:(id)sender
{
if([[segue identifier] isEqualToString:@"segOne"])
{
MyOtherViewController *other = (MyOtherViewController *)segue.destinationViewController;
other.theSegueIUsed = @"segOne";
}
}

您还需要将该属性添加到其他 View Controller 的头文件中:

@property (strong, nonatomic)NSString *theSegueIUsed;

关于iphone - Storyboard prepareForSegue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14143095/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com