【问题标题】:iOS Segue PopOver How To Back Pass DataiOS Segue PopOver 如何回传数据
【发布时间】:2016-10-25 11:30:03
【问题描述】:

我想从 PopOverController(右)发送数据视图控制器(左),我该怎么做?

【问题讨论】:

  • 但我想返回数据(左)而不是发送到 popoverController。 popoverController 发送 View Controller,我使用 [self dismissViewControllerAnimated:YES completion:nil];
  • 好的,那么您需要使用自定义委托。
  • 很可能dismissViewControllerAnimated 在您使用presentViewCont 方法导航您的应用程序时使用现在在这里您需要使用popViewControllerAnimated 方法在这种情况下,肯定没有方法可以将应用程序导航到diff VC .

标签: ios objective-c xcode uiviewcontroller uipopover


【解决方案1】:

您可以在 prepareForSegue 方法中传递数据,但首先要为 segue 添加标识符。 并使用此代码:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
        if ([segue.identifier isEqualToString:@"showPopover"]) {
            NSLog(@"FirstViewController: prepareForSegue");
            PopOverController * popoverVC = segue.destinationViewController;
            popoverVC.myProperty = @"Data to be passed";
        }
    }

【讨论】:

  • 我使用 [self dismissViewControllerAnimated:YES completion:nil];因为 prepareForSegue 不起作用
  • 你在哪里使用 [self dismissViewControllerAnimated:YES completion:nil]; ?
  • prepareForSegue 方法会在您按下案例中的按钮时调用。你能告诉我你的代码吗?
  • 在那个视图控制器中使用dismiss方法是可以的,但是如果你以正确的方式这样做,那么prepareForSegue必须被调用。
【解决方案2】:

首先创建一个属性来获取另一个视图控制器的数据。

在您的情况下,假设我们希望将字符串数据发送到第一个 viewController,因此我们在第二个中创建一个属性意味着 PopOverController

@property (nonatomic, strong) NSString *recipeName;

在您的案例 ViewController 中调用第一个 viewController 中的 segue 方法准备之后

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([segue.identifier isEqualToString:@"IdentifierOfPushViewController"]) {
        RecipeDetailViewController *destViewController = segue.destinationViewController;
        destViewController.recipeName = @"Hello this passing data"
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-01
    • 1970-01-01
    • 2015-02-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多