【问题标题】:Pass boolean value between ViewController在 ViewController 之间传递布尔值
【发布时间】:2012-10-12 08:11:57
【问题描述】:

我必须将一个布尔值从 ViewControllerA 传递给 ViewControllerB。在 ViewControllerA 我把作为一个属性:

 @property (nonatomic, assign)BOOL fromViewControllerA;

然后打开ViewControllerB:

   ViewControllerB * viewControllerB = [[ViewControllerB alloc]initWithNibName:@"ViewControllerB" bundle:nil];

    self.fromRootViewController = YES;

    [self.navigationController pushViewController:viewControllerB animated:YES];

在 ViewControllerB 中,我导入了 ViewControllerA 并创建了属性:

   @property (nonatomic, strong) ViewControllerA *viewControllerA

稍后在 ViewDidLoad() 中

    if (viewController.fromViewController){
       //.......
    }

不起作用。为什么?

【问题讨论】:

  • 你在哪里给viewControllerBviewControllerA属性赋值?

标签: ios uiviewcontroller messaging


【解决方案1】:

在 viewController B 中创建一个 BOOL 属性 say..BOOL setFlag;在 ViewController B 中合成,

现在在执行推送的 ViewController A 中

 ViewControllerB * viewControllerB = [[ViewControllerB alloc]initWithNibName:@"ViewControllerB" bundle:nil];

    self.fromRootViewController = YES;
    viewControllerB.setFlag = YES;  //set the value here 

    [self.navigationController pushViewController:viewControllerB animated:YES];

【讨论】:

    【解决方案2】:

    是不是因为您应该将第二行修改为 viewControllerB.fromRootViewController? (而不是自己)

    【讨论】:

      【解决方案3】:

      如果您想知道视图控制器的来源,则不应使用属性。在您的导航控制器数组中使用基本导航(在您想知道推送来源的类中)。

      NSArray *controllers = [self.navigationController viewControllers];
      UIViewController *lastController = [controllers objectAtIndex:[controllers count]-2];
      if([controller isKindOfClass:[YourDesireCheckController class]])
          return YES;
      return NO;
      

      【讨论】:

        猜你喜欢
        • 2011-12-07
        • 1970-01-01
        • 1970-01-01
        • 2015-12-01
        • 2023-03-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多