【问题标题】:how to customise animation(segue) between 2 table views in iOS?如何在 iOS 的 2 个表格视图之间自定义动画(segue)?
【发布时间】:2013-12-09 21:19:28
【问题描述】:

背景:我在应用中有表1和表2, 开始视图是表1,

实现什么:用户向右滑动,然后视图从左向右滑动并显示表格2

我的方法:

  1. 我尝试在表1和表2之间添加segue,使用push风格,问题是表2总是从右向左滑动,所以我放弃了这个方法

  2. 自定义动画:我添加了自定义转场,确实,当用户向右滑动时,我可以看到从左到右的过渡。问题是:表 2 只显示一次,然后变成黑屏。

我自定义的segue代码如下:


    UIViewController* source = (UIViewController *)self.sourceViewController;
    UIViewController* destination = (UIViewController *)self.destinationViewController;
    CGRect sourceFrame = source.view.frame;
    sourceFrame.origin.x = sourceFrame.size.width;

    CGRect destFrame = destination.view.frame;
    destFrame.origin.x = -destination.view.frame.size.width;
    destination.view.frame = destFrame;

    destFrame.origin.x = 0;

    [source.view.superview addSubview:destination.view];

    [UIView animateWithDuration:0.5
                     animations:^{
                         source.view.frame = sourceFrame;
                         destination.view.frame = destFrame;
                     }
                     completion:^(BOOL finished) {
                         UIWindow *window = source.view.window;
                         [window setRootViewController:destination];
                     }];

 

我怀疑这是由于完成代码:window setRootViewController:destination,因为表 1 和 2 使用的是 uitableviewcontroller 而不是 uiviewcontroller, 我试图将上面代码中的uiviewcontroller更改为uitableviewcontroller,但它仍然不起作用。

任何机构都知道如何解决这个问题? 源码可以在这里下载http://d.pr/f/tAkc

【问题讨论】:

  • 我认为您的问题出在您的第二个 tableView 上。你有故事板吗?显示第二个 tableView (viewDidLoad) 的代码...
  • 如果没有自定义segue,第二个表格视图显示正常,您可以从d.pr/f/tAkc找到源代码,其中包含所有代码,看看,谢谢

标签: ios objective-c uitableview ios7 uiviewanimation


【解决方案1】:

所以.. 对不起我之前的回答,但我不能把我的实际声誉放在 cmets 上。

将视图推送到另一个视图后出现黑色视图的问题在于您的 segue。

尝试删除此代码:

completion:^(BOOL finished) {
                     UIWindow *window = source.view.window;
                     [window setRootViewController:destination];

如果我删除它,则 segue 已完成并且第二张桌子仍然存在,但另一个问题是您无法滑回第一张桌子。

【讨论】:

  • 是的,完全正确。我之前试过删除这个,然后每次我往回滑动时,它都会崩溃:(
  • 我刚试过书签,在这个代码应用程序上变黑了。但我没有看到回扫的代码。它必须在您的 tableView2.m 文件中实现。
  • 嗨 Mayo,我在 tableview 2 中附加了一个新的源代码:d.pr/f/YUqW,正如我们所料,它每次都会崩溃。需要注意的一点是,如果将 tableview 1 和 2 更改为普通的 uiview 1 和 2,我们尝试的方法非常好,并且效果很好。我挠了挠头,仍然不知道根本原因
  • 嗨 Mayo,请参考我上面的 cmets 以获得答案。
【解决方案2】:

我自己找到了答案: 解决办法是去掉源码中的导航控制器。

由于使用push segues(向左/向右滑动向后/向前),我在开始时添加了导航控制器,当我尝试自定义segue动画时,导航控制器仍然存在。

无论如何,这是最终的源代码http://d.pr/f/ewOa,您可以从表格视图1向左/向右滑动到2并且不会崩溃。

【讨论】:

  • 链接失效
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-02
  • 1970-01-01
相关资源
最近更新 更多