在Swift

时间:2016-01-11 07:36:48

标签: ios swrevealviewcontroller

您好我是iOS新手并尝试实施SWRevealViewController。我已经按照一些教程并在教程项目中成功实现了SWRevealViewController,但我正在努力在现有项目中实现幻灯片菜单。

所以我有一个故事板,其中首先出现一个NavigationController,它是一个初始视图控制器,然后是标志,输入或注册屏幕。全部连接到导航控制器。登录后,我将显示汉堡菜单显示的主屏幕。

通过查看教程我尝试过将ViewController拖到故事板并添加一个类SWRevealViewController。然后我拖动了TableViewController并用菜单项填充了一些行。接下来,我已经完成了从SWRevealViewController到Table视图控制器的控制拖动,并选择reveal view controller set controller并将其命名为sw_rear

现在,在sw_front的教程中,他们已将SWRevealViewController连接到直接连接到主屏幕的NavigationViewController。但在我的项目中,并不是因为NavigationController直接连接到signin。我在这里试了两件事。首先我通过segue从SWRevealViewController连接到NavigationViewController并且它不起作用,我还尝试将另一个NavigtionViewController嵌入到主屏幕中,但它仍然无效。我希望你能理解我的问题。

代码:

if revealViewController() != nil {
    print("check")
    menuButton.target = revealViewController()
    menuButton.action = "revealToggle:"
    view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
}

教程链接http://www.appcoda.com/sidebar-menu-swift/

2 个答案:

答案 0 :(得分:0)

实际上SWRevealViewController performSegueWithIdentifier没有工作,所以进入你的SWRevealViewController类并用这个替换方法

- (void)loadStoryboardControllers
{
    if ( self.storyboard && _rearViewController == nil )
    {
    //Try each segue separately so it doesn't break prematurely if either Rear or Right views are not used.
    @try
    {
        UIViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"yourMenuController storyboard Identifier"];
        SWRevealViewControllerSegueSetController *segue = [[SWRevealViewControllerSegueSetController alloc] initWithIdentifier:SWSegueRearIdentifier source:self destination:controller];
        [segue perform];
    }
    @catch(NSException *exception) {}

    @try
    {
        UIViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"your front viewcontroller storyboard Identifier"];
        SWRevealViewControllerSegueSetController *segue = [[SWRevealViewControllerSegueSetController alloc] initWithIdentifier:SWSegueFrontIdentifier source:self destination:controller];
        [segue perform];
    }
    @catch(NSException *exception) {}

    @try
    {
        [self performSegueWithIdentifier:SWSegueRightIdentifier sender:nil];
    }
    @catch(NSException *exception) {}
}

}

答案 1 :(得分:0)

这是一个示例SWRevealViewController幻灯片菜单。

BMSlideMenu

BMSlideMenu