0

我必须将一个布尔值从 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){
       //.......
    }

不起作用。为什么?

4

3 回答 3

1

在 viewController B 中创建一个 BOOL 属性说.. 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];
于 2012-10-12T08:22:15.603 回答
0

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

于 2012-10-12T08:14:49.243 回答
0

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

NSArray *controllers = [self.navigationController viewControllers];
UIViewController *lastController = [controllers objectAtIndex:[controllers count]-2];
if([controller isKindOfClass:[YourDesireCheckController class]])
    return YES;
return NO;
于 2012-10-12T08:50:00.263 回答