UIScrollView菜单作为导航菜单

时间:2015-01-29 08:57:28

标签: ios xcode uiviewcontroller uiscrollview

我有一个应用程序,其中菜单栏是一个UIScrollView,由我在UIViewController上添加的UIButtons组成。 我想更改按下UIScrollView上的按钮时显示的UIViewController。 但是从UIScrollView显然我无法打电话:

[self.view presentViewController:myView animated:YES completion:nil];

我知道处理这种视图切换的最佳方法是什么。

4 个答案:

答案 0 :(得分:0)

从应用的rootView中显示它

[[[[[UIApplication sharedApplication]delegate]window]rootViewController] presentViewController:<#your view#> animated:<#a bool#> completion:<#any handler#>];

答案 1 :(得分:0)

试试这个     __weak UIViewController viewCSelf =(UIViewController )[self.superview nextResponder];

if([viewCSelf isKindOfClass:[UIViewController class]]){

[viewCSelf presentViewController:animated:YES completion:nil];

}

答案 2 :(得分:0)

当有基于sideMenu的应用程序时,我一直看到的基本方法是,必须有一个 ContainerViewController 来保存菜单&amp;休息所有其他 viewControllers 以少数方式显示在容器上 -

现在您可能需要重新考虑应用程序设计,以及如何继续。

正如上面提到的那样推动&amp;对于模型,您只能在 ContainerViewController 上进行菜单访问。还有另一种方法可以将 &#34;菜单添加为ApplicationWindow&#34; 的子视图。

希望这有助于您决定采取哪种方式。

答案 3 :(得分:0)

最常规的方法是使用delegation。 无论如何,你的scrollView位于视图上,该视图具有控制器,您可以以任何方式呈现另一个控制器(当前模态,推送到导航控制器的堆栈,添加为子视图等) 如何构建代码取决于哪个对象接收按钮操作。让我们假设它是一个包含带有按钮的滚动视图的视图:

// MenuBarView.h
@class MenuBarView;
@protocol MenuBarViewDelegate <NSObject>
- (void)menuBarView:(MenuBarView *)menuBar didSelectMenuItemAtIndex:(NSUInteger)index;
@end
@interface MenuBarView
@property (weak) id<MenuBarViewDelegate> delegate;
@end

// MenuBarView.m
...
- (void)menuButtonAction:(UIButton *)sender
{
   [_delegate menuBarView:self
 didSelectMenuItemAtIndex:sender.tag] //you can use button's tag as row index
}
...

现在在viewController中采用MenuBarViewDelegate协议,它拥有MenuBarView实例并且显示子视图控制器依赖于所选择的菜单索引