1

我正在尝试在ViewController(第一个视图)和BrowserController(第二个视图)之间创建一个自定义 segue。

目前我有...

CustomSegue.h:

#import <UIKit/UIKit.h>

@interface CustomSegue : UIStoryboardSegue

@end

CustomSegue.m:

    #import "CustomSegue.h"

@implementation CustomSegue

- (void)perform {

    NSLog(@"Perform Method Running");

    UIViewController *ViewController = (UIViewController *) self.sourceViewController;
    UIViewController *BrowserController = (UIViewController *) self.destinationViewController;

    NSLog(@"Starting duration...");

    [UIView transitionWithView:ViewController.navigationController.view duration:0.2
    options:UIViewAnimationOptionTransitionFlipFromLeft
    animations:^{

                NSLog(@"Animation section");

                [ViewController.navigationController pushViewController:BrowserController animated:NO];

                }
                    completion:NULL];

    NSLog(@"Performance Method Completion");

}

当我单击按钮转到下一个视图时,什么也没有发生。

我将视图 segue 设置为“自定义”(CTRL 拖动)并将我的类定义为“CustomSegue”。我看到在 CTRL 和拖动之后有两个“自定义”选项可供选择 - 我已经尝试了这两个选项以防万一(我两次都重新定义了我的类),但问题仍然存在。我还使用了一个NSLog并看到该perform方法正在被调用,我没有错误,但是该按钮仍然没有执行下一个视图的转场(或任何转场)。

触发segue的按钮

- (IBAction)browserButton:(id)sender

这是我可以缩小范围的最后一个区域......我需要添加任何内容IBAction来告诉它使用新的 segue 吗?

4

2 回答 2

2

Xcode 告诉你的是完全正确的:(当然self是 type CustomSegue)既没有ViewController也没有BrowserController属性。这是因为你没有在你的CustomSegue类中声明这些属性,它的基类UIStoryboardSegue也没有它们。

您可以尝试两种解决方案 - 直接使用内置属性,或者使用您想要的名称将它们包装在属性中。

这是第一种方法:

UIViewController *ViewController = (UIViewController *) self.sourceViewController;
UIViewController *BrowserController = (UIViewController *) self.destinationViewController;

这是第二种方法:

-(UIViewController*) ViewController {
    return self.sourceViewController;
}
-(UIViewController*) BrowserController {
    return self.destinationViewController;
}

第一种方法实现起来更快,但它可能不太可读。第二种方法需要更多的输入,但它为源控制器和目标控制器提供了更好地描述它们在应用程序中的角色的名称。这个选择由你。

于 2013-04-09T01:06:17.900 回答
1

您无需对 IBAction 执行任何操作。似乎一切都应该正常工作并且你已经尝试了一切 - 我建议你删除工作(或者如果你使用 github 则回滚)并重新开始。从添加类之前的那一点开始,CustomSegue并确保重新输入代码(你永远不知道,有时你会捕捉到一些小细节)。

祝你好运。

于 2013-04-13T00:38:01.997 回答