我在应用程序上使用three20,我想使用在Path和Facebook上使用的这种菜单:
我的应用程序使用TTNavigator网址方案非常密集,似乎TTNavigator就像对窗口进行独占控制一样。所以我没有两个视图控制器可以玩。
有什么方法可以将TTNavigator添加到视图控制器并在另一个上创建我的菜单?
答案 0 :(得分:0)
SMMenu * smmenu = [[SMMenu alloc] init];
[self.window addSubview: smmenu.view];
[self.window addSubview: navigator.window];
[self.window makeKeyAndVisible];
只需按下如下按钮navigator.window
即可向左移动[navigator.window setLeft:250]
,它将在后面显示视图,所有导航器都将在前视图中工作。 / p>
好。不幸的是,现在我丢失了键盘视图.. :)
答案 1 :(得分:0)
使用Tom Adriaenssen出色的ViewDeck实现,您可以拥有类似Path的滑动左侧视图控制器:
在您的应用中,设置navigator.window时,请勿传递窗口。传递自定义UIViewController的UIView(您将在ViewDeck中设置为“中央”视图控制器的那个:
navigator.window=(UIWindow*)myCentralViewController.view;
这会欺骗three20的TTNavigator,认为它已经成功接管了你的窗口,而事实上,它只是一个视图。但请注意,您可能需要对该视图进行子类化并实现空的UIWindow方法,例如:
- (void)makeKeyAndVisible{}
..因为three20的TTNavigator仍然认为这是你的主UIWindow并期望你的对象响应常见的UIWindow选择器。
这是一个未知的领域,它肯定是一个可能会产生意想不到的后果的黑客攻击。
您可能需要在“假窗口”框架上设置负y,以补偿状态栏。 e.g:
[[MYFakeWindow alloc] initWithFrame:CGRectMake(0, -20, 320, 480)];
再次,小心。我在一个应用程序中使用这个hack,它表现得非常好,但你仍然在与三十框架作斗争,所以要确保它不会反击。