我的目标是用自定义动画制作一个自定义图标,如下所示:我希望segue用一个来自sourceViewController的按钮覆盖一个来自destinationViewController的按钮,其效果类似于导航控制器的推送效果,也就是说,新按钮应该从右向左按旧按钮。
我已经能够让旧按钮(从sourceViewController)按需要移动:
[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的按钮呢?
发布于 2013-03-11 10:47:45
在尝试访问按钮时,目标视图控制器的视图尚未初始化/加载。要加载目标视图控制器的视图,只需访问视图属性。在使用按钮之前执行此操作:[destinationViewController view];
destinationViewController.view;也可以工作,但它会生成编译器警告。
背景资料:
如果您访问视图属性并且其值当前为零,视图控制器将自动调用loadView方法并返回结果视图。
方法loadView加载控制器管理的视图。您不应该直接调用此方法。
发布于 2013-03-09 14:20:19
你是正确的,你不能动画的对象,但还不存在。但是,你可以假装。
希望这能有所帮助。
https://stackoverflow.com/questions/15311630
复制相似问题