首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用自定义segue中的destinationViewController按钮

使用自定义segue中的destinationViewController按钮
EN

Stack Overflow用户
提问于 2013-03-09 14:12:13
回答 2查看 515关注 0票数 1

我的目标是用自定义动画制作一个自定义图标,如下所示:我希望segue用一个来自sourceViewController的按钮覆盖一个来自destinationViewController的按钮,其效果类似于导航控制器的推送效果,也就是说,新按钮应该从右向左按旧按钮。

我已经能够让旧按钮(从sourceViewController)按需要移动:

代码语言:javascript
运行
复制
[UIView animateWithDuration:1.0 animations:^{
        // set the target frame for animated view
        sourceViewController.optionsButton.frame = leftButtonTargetFrame;
    } completion:^(BOOL finished) {
        [navigationController pushViewController:destinationViewController animated:NO];
        // reset the button's frame back to its original frame
        sourceViewController.optionsButton.frame = leftButtonInitFrame;
}];

但我很难让新的按钮(从destinationViewController)搬进来。原因是,I不能访问destinationViewController的视图元素:在执行segue时,它们没有实例化。我不能动一个没有实例化的按钮。

那么,如何将sourceViewController中的按钮替换为来自destinationViewController的按钮呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-11 10:47:45

在尝试访问按钮时,目标视图控制器的视图尚未初始化/加载。要加载目标视图控制器的视图,只需访问视图属性。在使用按钮之前执行此操作:[destinationViewController view];

destinationViewController.view;也可以工作,但它会生成编译器警告。

背景资料:

如果您访问视图属性并且其值当前为零,视图控制器将自动调用loadView方法并返回结果视图。

方法loadView加载控制器管理的视图。您不应该直接调用此方法。

票数 0
EN

Stack Overflow用户

发布于 2013-03-09 14:20:19

你是正确的,你不能动画的对象,但还不存在。但是,你可以假装。

  1. 创建一个位置保持按钮,该按钮看起来将与新视图控制器中的按钮相同。
  2. 把它动画到正确的地方。
  3. 当目标视图控制器进来时,它的按钮应该是不可见的。
  4. 在视图控制器就位后(即segue已经完成),目标视图控制器可以确保其按钮的正确位置,并使其实际按钮可见。

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15311630

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档