iphone - 自定义 segue 推像后退按钮

标签 iphone ios xcode back-button segue

我正在尝试构建我的自定义 segue,其行为类似于标准 Push segue,但在我的情况下,我想使用自定义按钮在屏幕之间切换(没有标签栏适合这个应用程序,任何模式 segue 都不是也不错)。主屏幕是自定义图形,要转到的屏幕是 map 。用户选择 map 上的点,点击完成并返回主屏幕及其坐标。 我正在尝试将 ViewController 与自定义 segue 连接起来。

我在 Internet 上研究了很多解决方案并找到了一个适合的解决方案,但是代码散落在 ViewControllers 和 AppDelegate 周围(我不确定 Apple 是否会接受它)。我正在尝试将整个代码放入 CustomSegue.m/h。成功是部分的,因为使用技术(下面)它会转到第二个 ViewControler,但我不知道如何关闭第二个并返回主屏幕。我尝试了各种技术,但是当我运行它时,编译器终止了应用程序并出现了一堆错误。在构建和运行之前既没有错误也没有警告。我还尝试使用 [self dismissModalViewControllerAnimated:YES] 按钮关闭它;或 [self dismissViewControllerAnimated:YES completion:nil];当我尝试模式转换但我的代码结果不佳时,它们会起作用。

有没有人对执行此操作的简洁方法有任何建议。最近几天我一直在解决这个问题。我在很多应用程序中看到了这种 segues 转换,所以它似乎是非常流行的简单解决方案。我在 Xcode 方面经验不多,只有几个月。 这是我的自定义转场(带有 QuartzCore 动画)。

#import "CustomTabBarSegue.h"

@implementation CustomTabBarSegue


 -(void)perform {
    UIViewController *src = (UIViewController*)[self sourceViewController];
    UIViewController *dst = (UIViewController*)[self destinationViewController];

    UIView *currentView = src.view;
    UIView *theWindow = [currentView superview];
    UIView *newView = dst.view;
    [theWindow addSubview:newView];

    CATransition *transition = [CATransition animation];

    transition.delegate = self;
    transition.duration = 1;

    transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
    transition.type = kCATransitionMoveIn; 
    transition.subtype = kCATransitionFromRight;


    [[theWindow layer] addAnimation:transition forKey:@"MySegue"];
 }

@end

下面是我从 destinationVC 返回的按钮的代码。 (不起作用)

- (IBAction)dismiss:(id)sender 

{

[self dismissViewControllerAnimated:YES completion:^() {
    [self performSegueWithIdentifier:@"MySegue" sender:self];
}];

最佳答案

我想我可能明白你想做什么。如果我错了,请纠正我。您想转到一个 View ,然后点击后退按钮返回。正确的?用 Storyboard做到这一点很容易。将 NavigationController 作为您的初始 View ,并将导航 Controller 的 Root View Controller 设置为主菜单。从那里你想做一个 PUSH segue 并返回你想做一个 POP。

调用 push segue 是调用 segue 的正常方式,但是 pop 有点不同。弹出一个 View 的代码是:[self.navigationController popViewControllerAnimated:YES];。弹回 Root View Controller 的代码是:[self.navigationController popToRootViewControllerAnimated:YES];

我相信这就是您想要做的。无需自定义转场。

关于iphone - 自定义 segue 推像后退按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11789106/

相关文章:

objective-c - 如何使用 ZBar 阅读器的 scanCrop 属性?

iphone - iPhone 7 Plus 双摄像头的深度图

iphone - 地理定位二维码格式

ios - 无法使用参数列表调用类型 'append'

ios - UIButton 文本缩写?

iphone - 子字符串在 NSString 中的位置

iphone - 使用 UIApplication sharedApplication 调用电话

android - 如何在 iOS 和 Android 的屏幕中间(垂直和水平)对齐 ionic 卡?

objective-c - 如何更改 NSPopover 箭头位置?

swift - 如何查看我使用的是哪个版本的 Swift?