Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/108.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UIScrollView菜单作为导航菜单_Ios_Xcode_Uiviewcontroller_Uiscrollview - Fatal编程技术网

Ios UIScrollView菜单作为导航菜单

Ios UIScrollView菜单作为导航菜单,ios,xcode,uiviewcontroller,uiscrollview,Ios,Xcode,Uiviewcontroller,Uiscrollview,我有一个应用程序,其中菜单栏是一个UIScrollView,由我添加到UIViewController上的UIButtons组成。 我想更改按下UIScrollView上的按钮时显示的UIViewController。 但从UIScrollView来看,显然我不能打电话: [self.view presentViewController:myView animated:YES completion:nil]; 我知道处理这种视图切换的最佳方法。从应用程序的根视图中演示它 [[[[[UIAppl

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

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

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

从应用程序的根视图中演示它

[[[[[UIApplication sharedApplication]delegate]window]rootViewController] presentViewController:<#your view#> animated:<#a bool#> completion:<#any handler#>];
试试这个 __弱UIViewController viewCSelf=UIViewController[self.superview nextResponder]

if([viewCSelf isKindOfClass:[UIViewController class]]){
[viewCSelf presentViewController:已设置动画:是完成:无]


}

当有一个基于侧菜单的应用程序时,我一直看到的基本方法是,必须有一个ContainerViewController来保存菜单&其余所有其他ViewController都以以下几种方式显示在容器上-

作为childViewController, 推动 作为情态动词 作为自定义动画推送或模式。 现在你可能不得不重新思考应用程序的设计,你想如何继续

如上在push&model中所述,您将只能在ContainerViewController上访问菜单。还有另一种方法可以将菜单添加为ApplicationWindow的子视图


希望这能帮助你决定你想采取哪种方式。

最传统的方式是使用授权。 无论如何,您的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
}
...

现在,在拥有MenuBarView实例的viewController中采用MenuBarViewDeleteGate协议,并根据所选菜单索引显示子视图控制器

据我所知,您已将屏幕分为两个区域。一个是带有导航按钮的滚动视图,另一个是根据滚动视图中按下的按钮显示某些视图的区域?是,在下层有视图,视图上方有我的ScrollView菜单,带有按钮,用于选择我要查看的视图…好的,然后您可以在要显示某些视图的区域中添加容器视图,并使用容器视图childviewcontroller propertyok显示视图控制器,我知道如何创建委托方法,但我不知道当我按MenuBarView按钮时如何在所有视图控制器中使用在视图控制器之间切换。。。