自定义 UIStoryboardSegue 不工作

Custom UIStoryboardSegue not working

我正在尝试编写自己的自定义 UIStoryboardSegue,其中 UIView 'slides' 从 sourceViewControllerdestinationViewController。目前,我有以下代码:

- (void)perform {
    UIViewController *sourceViewController = self.sourceViewController;
    UINavigationController *navigationController = [[self sourceViewController] navigationController];
    RestaurantViewController *destinationViewController = self.destinationViewController;

    destinationViewController.colors.frame = CGRectMake(0, 0, 10, 10);

    [sourceViewController.view addSubview:destinationViewController.tables];

    [UIView animateWithDuration:10.0
                          delay:0.0
                        options:UIViewAnimationOptionCurveEaseInOut
                     animations:^{
                         destinationViewController.tables.frame = CGRectMake(100, 100, 100, 100);
                     }
                     completion:^(BOOL finished){
                         [destinationViewController.tables removeFromSuperview]; // remove from temp super view
                         [navigationController pushViewController:destinationViewController animated:NO]; // present VC
                     }];
}

作为测试,我只是在玩弄表格视图的框架。我还将持续时间设置为高达 10 秒,这样我就可以看到所有内容。但是,destinationViewController 只是卡入到位,完全忽略了我编写的所有代码。我在这里做错了什么?

您好,我正在尝试使用您的代码来完成这项工作,但我发现您的主要问题是您的 destinationViewController.tables 为 nil,这就是为什么似乎没有任何工作的原因。

您需要确保您的 destinationViewController.tables 不为零,您可以在 RestaurantViewController class 中使用类似这样的东西来做到这一点

    - (instancetype)initWithCoder:(NSCoder *)coder
      {
        self = [super initWithCoder:coder];
        if (self) {
            self.tables = [[UIView alloc]initWithCoder:coder];
         }
       return self;
      }

希望对您有所帮助。对不起我的英语