gpt4 book ai didi

ios - 在特定的 ViewController 中禁用页面滑动

转载 作者:行者123 更新时间:2023-11-28 21:59:22 25 4
gpt4 key购买 nike

我在使用 github 可用项目的 Controller 中加载侧边菜单 View Controller ResideMenu

它允许您链接一个按钮以调用侧面菜单或从手机的一侧滚动以调出菜单。

我只想在 mainViewController 上禁用该特定功能。菜单的操作是从手机的左侧一直滑动到右侧,然后拉出侧边菜单。

我正在使用导航 Controller 和 Storyboard

我会发布代码,但有很多代码,让我知道是否应该寻找要发布的任何特定代码

最佳答案

所以这比我想象的要多一些变化。我根据 github 中的 RESideMenu 提供的项目创建了一个示例项目。

https://github.com/wottle/REsideDemoWithOnOff

打开 ExampleProjects 目录中的项目以查看其工作原理。

我所做的基础是这样的:

修改了现有协议(protocol),为 willShow... 方法返回一个 BOOL。在实现中,我更改了代码以检查返回值,这决定了菜单是否会显示或现在。然后,因为菜单的显示和隐藏是由 Root View Controller (而不是每个单独的 View Controller )控制的,所以我创建了一个新协议(protocol),您可以选择由您要显示的每个单独的 View Controller 实现。

@protocol RESideViewDelegate <NSObject>
@optional
- (BOOL)shouldAllowMenu;
@end

每个 View Controller 都符合这个协议(protocol),并且在这种情况下它们实现了它。如果他们不符合协议(protocol),默认情况下他们将允许显示菜单。以下是如何使您的各个 View Controller 符合 .h 中的新协议(protocol):

#import <UIKit/UIKit.h>
#import "RESideMenu.h"

@interface DEMOFirstViewController : UIViewController <RESideViewDelegate>
- (BOOL) shouldAllowMenu;

@end

并在 View Controller 的 .m 中,提供 shouldAllowMenu 方法的实现:

#import "DEMOFirstViewController.h"

@interface DEMOFirstViewController ()

@end

@implementation DEMOFirstViewController


- (BOOL) shouldAllowMenu
{
return YES;
}

@end

在第二个 View controller 中,我返回 no。所以第一个 View Controller 允许菜单,第二个不允许。

 - (BOOL) shouldAllowMenu
{
return NO;
}

然后,在 willShowMenuViewController 的 Root View Controller 实现中,我查看当前 View Controller 是否符合协议(protocol),如果符合,则调用该方法并将其传回 RESideMenu。

- (BOOL)sideMenu:(RESideMenu *)sideMenu willShowMenuViewController:(UIViewController *)menuViewController
{
NSLog(@"willShowMenuViewController: %@", NSStringFromClass([menuViewController class]));

UINavigationController *navController = sideMenu.contentViewController;
if( [navController.topViewController conformsToProtocol:@protocol(RESideViewDelegate) ])
{
UIViewController <RESideViewDelegate>*resideView = navController.topViewController;
return [resideView shouldAllowMenu];
}
return NO;
}

我确认这有效,但请花一些努力将其合并到您的项目中。为了跟踪我的更改,我更改了 RESideMenu.m 和 RESideMenu.h,并对 Root View Controller 和内容 View Controller 进行了上述更改。

关于ios - 在特定的 ViewController 中禁用页面滑动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25476946/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com