0

我在 iOS 中做像 Facebook 这样的幻灯片菜单是一个简单的应用程序,我在此链接http://www.raywenderlich.com/32054/how-to-create-a-slide-out-中提供教程的逐步过程类似导航的 facebook-and-path 。当我单击按钮时,我只在右侧面板滑动,它正在移动幻灯片,但是当我再次调用我的主视图时它正在发生,但是应用程序崩溃任何人都可以帮助我摆脱这个问题

#define RIGHT_PANEL 2
#define CENTRAL_TAG 1
#define SLIDE_TIMING .25
#define PANEL_WIDTH 60
@interface MainViewController ()<CenterViewControllerDelegate>



@property(nonatomic,strong)CentralViewController *centralView;
@property(nonatomic,strong)RightViewController *RightView;

@property (nonatomic, assign) BOOL showingRightPanel;

-(UIView*)getright;
-(UIView*)resetmainView;
@end



@implementation MainViewController



- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}



- (void)viewDidLoad
{
    [super viewDidLoad];
    self.centralView = [[CentralViewController alloc] initWithNibName:@"CentralViewController" bundle:nil];

    self.centralView.view.tag = CENTRAL_TAG;

    self.centralView.delegate=self;


    [self.view addSubview:self.centralView.view];
    [self addChildViewController:_centralView];

    [_centralView didMoveToParentViewController:self];




}
-(UIView*)getright
{

if(_RightView==Nil)
    {
        self.RightView=[[RightViewController alloc]initWithNibName:@"RightViewController" bundle:Nil];

        self.RightView.view.tag=RIGHT_PANEL;
        self.RightView.delegate=self;
        [self.view addSubview:self.RightView.view];
        [self addChildViewController:self.RightView];
        [_RightView didMoveToParentViewController:self];

        _RightView.view.frame=CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);

    }
    self.showingRightPanel=YES;
    UIView *view=self.RightView.view;
    return view;
}

-(void)MovetoOriginal
{
    [UIView animateWithDuration:SLIDE_TIMING delay:0 options:UIViewAnimationOptionBeginFromCurrentState
                     animations:^{
                         _centralView.view.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
                     }
                     completion:^(BOOL finished) {
                         if (finished) {

                             [self resetmainView];
                         }
                     }];}

-(void)rightpanelmove
{
    UIView *child=[self getright];
    [self.view sendSubviewToBack:child];

    [UIView animateWithDuration:SLIDE_TIMING delay:0 options:UIViewAnimationOptionBeginFromCurrentState
                     animations:^{
                         _centralView.view.frame = CGRectMake(-self.view.frame.size.width + PANEL_WIDTH, 0, self.view.frame.size.width, self.view.frame.size.height);
                     }
                     completion:^(BOOL finished) {
                         if (finished) {

                             _centralView.rightbutton.tag = 1;
                         }
                     }];

}


-(UIView*)resetmainView
{
    if(_RightView!=Nil)
    {
        [self.RightView.view removeFromSuperview];
        self.RightView=Nil;
        _centralView.rightbutton.tag=0;
        self.showingRightPanel=NO;
    }

这是我调用事件的主要控制代码

这是按钮动作代码

- (IBAction)btnright:(id)sender {

    UIButton *button = sender;
    switch (button.tag) {
        case 0: {
            [_delegate rightpanelmove];
            break;
        }

        case 1: {

             [_delegate MovetoOriginal];
            break;
        }

        default:
            break;
    }} 
4

1 回答 1

0
-(UIView*)resetmainView
{
    if(_RightView!=Nil)
    {
        [self.RightView.view removeFromSuperview];
        self.RightView=Nil;
        _centralView.rightbutton.tag=0;
        self.showingRightPanel=NO;
    }

    UIView *view=self.centralView.view;
    return view;

}

这是我错过的现在它正在工作!!!!

于 2013-08-06T11:33:26.957 回答