29,027
社区成员
发帖
与我相关
我的任务
分享
@interface WindowStack : NSObject{
UIViewController * _root;
NSMutableArray * _stack;
}
-(id)initWidthRootView:(UIViewController *)root;
-(void)push:(UIViewController *) controller isClearStack:(BOOL)isClearStack;
-(void)pop;
@end
@implementation WindowStack
-(id)initWidthRootView:(UIViewController *)root{
_root = root;
_stack = [[NSMutableArray alloc] initWithCapacity:5];
[_stack addObject:root];
return [super init];
}
-(void)push:(UIViewController *) controller isClearStack:(BOOL)isClearStack{
if (isClearStack) {
while (_stack.count > 1) {
[self pop];
}
}
[[_stack objectAtIndex:_stack.count - 1] presentViewController:controller animated:YES completion:nil];
[_stack addObject:controller];
}
-(void)pop{
if (_stack.count > 1) {
UIViewController * controller = [_stack objectAtIndex:_stack.count - 1];
[controller dismissViewControllerAnimated:NO completion:nil];
[controller.view removeFromSuperview];
[_stack removeObject:controller];
}
}
@end
我觉得这是个临时的解决办法,不过用着还可以~~