2

我正在使用ECSlidingViewController

在示例项目中,我在第一个视图上添加了一个带有 IBAction
的按钮,我希望第一个视图上的按钮转到第二个视图(不使用滑出导航)。

- (IBAction)btnPressed:(id)sender {
    UIViewController *newTopViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"SecondTop"];
    [self.slidingViewController anchorTopViewOffScreenTo:ECRight animations:nil onComplete:^{
        CGRect frame = self.slidingViewController.topViewController.view.frame;
        self.slidingViewController.topViewController = newTopViewController;
        self.slidingViewController.topViewController.view.frame = frame;
        [self.slidingViewController resetTopView];
    }];
}

使用此代码,它只会进入导航滑出菜单,而不会进入第二个

4

1 回答 1

7

不要总是使用self.slidingViewController. 它是派生属性,而不是静态值。所以发生的事情是你用第二个视图替换了第一个视图,然后第一个视图不能再获得滑动控制器(你破坏了它的引用)。所以,改为这样做:

- (IBAction)btnPressed:(id)sender {
    ECSlidingViewController *slidingViewController = self.slidingViewController;

    UIViewController *newTopViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"SecondTop"];
    [slidingViewController anchorTopViewOffScreenTo:ECRight animations:nil onComplete:^{
        CGRect frame = slidingViewController.topViewController.view.frame;
        slidingViewController.topViewController = newTopViewController;
        slidingViewController.topViewController.view.frame = frame;
        [slidingViewController resetTopView];
    }];
}
于 2013-06-24T14:30:53.513 回答