too*_*oom 14 push uiviewcontroller ios
我有两个UIViewControllers,它们包含在navigatoin视图控制器中,并且都处于横向模式.我想在没有像push这样的动画的情况下在两个uiviewcontroller之间切换.因此,如果用户在第一个viewcontroller中单击一个按钮,我会在这两个之间执行自定义segue.
#import <Foundation/Foundation.h>
#import "AppDelegate.h"
@class AppDelegate;
@interface NonAnimatedSegue : UIStoryboardSegue {
}
@property (nonatomic,assign) AppDelegate* appDelegate;
@end
Run Code Online (Sandbox Code Playgroud)
而这个实施:
#import "NonAnimatedSegue.h"
@implementation NonAnimatedSegue
@synthesize appDelegate = _appDelegate;
-(void) perform{
self.appDelegate = [[UIApplication sharedApplication] delegate];
UIViewController *srcViewController = (UIViewController *) self.sourceViewController;
UIViewController *destViewController = (UIViewController *) self.destinationViewController;
[srcViewController.view removeFromSuperview];
[self.appDelegate.window addSubview:destViewController.view];
self.appDelegate.window.rootViewController=destViewController;
}
@end
Run Code Online (Sandbox Code Playgroud)
在故事板中,我切换到自定义segue,实际上它工作正常.唯一的问题是第二个uiviewcontroller不是以横向模式显示,而是以protrait方式显示.如果我删除自定义segue并用push segue替换它,那么一切正常,第二个viewcontroller以横向模式显示.
那么如果我使用自定义segue,我还需要做什么才能使第二个视图控制器也处于横向视图中?
too*_*oom 14
上面的代码不起作用,因为destinationViewController无法自己从UIInterfaceOrientation接收更新.它通过它的"容器视图控制器"(导航控制器)接收这些更新.要使自定义segue正常工作,我们需要通过导航控制器转换到新视图.
-(void) perform{
[[[self sourceViewController] navigationController] pushViewController:[self destinationViewController] animated:NO];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13939 次 |
| 最近记录: |