我已经收录了Three20图书馆,并使用TTNavigator查看我的观点。
我的目标是从视图4翻到视图2.
我找到的唯一解决方案是调用View 4中的popViewControllerAnimated进入View 3,然后在View3中的ViewDidAppear中再次调用popViewControllerAnimated,进入View 2。
问题是,当然,我只想在View3中调用viewViewDtrollerAnar,当ViewDidAppear从View 4调用到View 3时,而不是在其他情况下调用(例如View 2打开View 3)。
因此,据我所知,我必须设置一个BOOL属性或类似的东西,但是如何? 我不能在这里与代表合作,因为Three20提供了URL导航。
答案 0 :(得分:3)
使用UINavigationController
的-popToViewController:animated:
方法:
// This is a method of your UIViewController subclass with view 4
- (void) popTwoViewControllersAnimated:(BOOL)animated {
NSInteger indexOfCurrentViewController = [self.navigationController.viewControllers indexOfObject:self];
if (indexOfCurrentViewController >= 2)
[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:indexOfCurrentViewController - 2] animated:animated];
}
答案 1 :(得分:1)
如何使用Singleton设计模式
您可以在那里设置一个bool,您可以根据您要来的视图进行更改,然后在视图3中检查该值是什么。在我看来,这是在不使用代理的情况下最简单的方法
.h文件
@interface Singleton : NSObject
{
BOOL flag;
}
@property(nonatomic) BOOL flag;
@end
.m file
static Singleton *instance = nil;
@implementation Singleton
@synthesize flag;
+(id) sharedManager
{
@synchronized(self){
if(instance == nil)
instance = [[super allocWithZone:NULL] init];
}
return instance;
}
+(id)allocWithZone:(NSZone *)zone
{
return [[self sharedManager] retain];
}
-(id) copyWithZone:(NSZone *)zone
{
return self;
}
-(id) retain
{
retrun self;
}
-(unsigned) retainCount
{
retrun 1;
}
-(id) init
{
if(self == [super init])
{
flag = NO;
}
}
请原谅我,如果代码中有一些小错误,请快速实现我的头脑。