【问题标题】:iOS: SWRevealViewController revealToggle is been call but doesn't do nothingiOS:SWRevealViewControllerrevealToggle 被调用但什么都不做
【发布时间】:2017-10-11 00:09:47
【问题描述】:

我正在尝试在这种情况下实现 SWRevealViewController:

从我的主视图控制器:

-(void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:YES];
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    SWRevealViewController *SWR = [storyboard instantiateViewControllerWithIdentifier:@"SWRevealViewController"];
    [self presentViewController:SWR animated:YES completion:nil];
}

来自我的绿色视图控制器:

-(void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:YES];
    self.reveal = [[SWRevealViewController alloc] init];
    self.reveal.delegate = self;
    self.menu.target = self;
    self.menu.action = @selector(revealToggleAction:);
    [self.view addGestureRecognizer:self.reveal.panGestureRecognizer];
    NSLog(@"viewDidLoad");
}

-(void)revealToggleAction:(id)sender
{
    [self.reveal revealToggle:self];
}

revealToggle 操作已被调用,但没有执行任何操作。它不加载后视图控制器。你们中的任何人都知道发生这种情况或我做错了什么吗?

【问题讨论】:

    标签: ios objective-c iphone uistoryboard


    【解决方案1】:

    假设您从右侧显示侧栏菜单。

    首先将您的第一个视图控制器嵌入到导航控制器,然后在您的第一个视图控制器viewdidload()viewDidAppear 方法中添加下面提到的代码,即

    //this is your side menu view controller.
    
    UIViewController *sideMenuController =
    [self.storyboard instantiateViewControllerWithIdentifier:@"YourSideMenuIdentifier"];
    
    //this is the navigation controller embed to your green view controller.
    
    UINavigationController *nc1 =
    (UINavigationController *)[self.storyboard instantiateViewControllerWithIdentifier:@"YourNavigationControllerIdentifier"];
    
    //This is your reveal view Controller.
    
    SWRevealViewController *revealViewController =
    [[SWRevealViewController alloc]initWithRightViewController:sideMenuController frontViewController:nc1];
    [self.navigationController pushViewController:revealViewController animated:YES];
    [self.navigationController setNavigationBarHidden:YES];
    

    这将导航到控制器,即绿色视图控制器。

    然后在您的绿色视图控制器viewdidload()viewDidAppear 方法中添加下面提到的代码,即

    //GreenViewController.h file
    
    @interface GreenViewController : UIViewController
    @property (weak, nonatomic) IBOutlet UIBarButtonItem *sideBarItem;
    @end
    
    
    //Your GreenViewController.m file
    
    _sideBarItem.target = self.revealViewController;
    _sideBarItem.action = @selector(rightRevealToggle:);
    SWRevealViewController *revealController = [self revealViewController];
    [self.view addGestureRecognizer:revealController.panGestureRecognizer];
    

    注意:有关详细信息,请查看下面提到的链接

    http://www.appcoda.com/ios-programming-sidebar-navigation-menu/

    【讨论】:

      【解决方案2】:

      您需要设置 SWRevealViewController 是初始视图控制器。

      【讨论】:

        【解决方案3】:

        您正在创建 SWRevealViewController 的新实例。

        我认为如果您将self.reveal 设置为self.revealViewController 它将起作用。

        【讨论】:

          猜你喜欢
          • 2012-05-17
          • 2023-03-15
          • 2012-04-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多