您的位置:首页 > 移动开发 > IOS开发

iOS编程如何在导航条上创建上下文按钮菜单

2017-04-14 01:56 344 查看
      有时候在iOS编程中,需要在指定界面的导航条上创建用用自己的上下文菜单,如:应用分享,设置菜单。需要以代码形式灵活构建相应按钮和事件。先看代码:

       

- (void)createMenuButton:(NSString *)imageName {

    // init your custom button, or your custom view

   

   UIButton*  menuButton = [UIButton
buttonWithType:UIButtonTypeCustom];

//定义和构建按钮类型

    menuButton.frame =
CGRectMake(baseWidth-40,
0, 30,
30); // custom frame

//创建菜单位置和大小  

    [menuButton
setImage:[UIImage
imageNamed:imageName]
forState:UIControlStateNormal];//根据输入的图像资源,创建菜单图像

    [menuButton
addTarget:self
action:@selector(menuButtonAction:)
forControlEvents:UIControlEventTouchUpInside];//定义按钮事件

    

    // set left barButtonItem with custom view

   

self.navigationItem.rightBarButtonItem = [[UIBarButtonItem
alloc]
initWithCustomView:menuButton];//分配导航条rightBarButtonItem空间,并初始化为使用者定义的按钮

}

//经过上面的步骤,在应用界面导航条会显示上下文按钮菜单。如果要实现按钮还需要添加相应的事件函数,代码如下:

-(IBAction)menuButtonAction:(id)sender{

    UIAlertController * viewController=   [UIAlertController

                                           alertControllerWithTitle:@"Menus"

                                           message:nil

                                           preferredStyle:UIAlertControllerStyleAlert];

    //UIAlertControllerStyleActionSheet

    viewController.preferredContentSize=CGSizeMake(100,
60);

    

    UIAlertAction *cancelAction = [UIAlertAction
actionWithTitle:@"Cancel"
style:UIAlertActionStyleCancel
handler:nil];

    

   

    UIAlertAction* shareAction = [UIAlertAction

                                  actionWithTitle:@"Share with..."

                                  style:UIAlertActionStyleDefault

                                  handler:^(UIAlertAction * action)

                                  {

                                      [self
shareInfor];

                                      

                                  }];

    UIAlertAction* loadHelpBox = [UIAlertAction

                                  actionWithTitle:@"Help"

                                  style:UIAlertActionStyleDefault

                                  handler:^(UIAlertAction * action)

                                  {

                                      //Do some thing here

                                      helpType=HELP_OPERATION;

                                      [self
performSegueWithIdentifier:@"detail_help_view"sender:self];

                                      NSLog(@"\nloadSettingsBox");

                                      

                                  }];

    

    

    UIAlertAction* loadDefaultSettingBox = [UIAlertAction

                                            actionWithTitle:@"DefaultSettings"

                                            style:UIAlertActionStyleDefault

                                            handler:^(UIAlertAction * action)

                                            {

                                                //Do some thing here

                                                NSLog(@"\nloadDefaultSettingsBox");

                                                [self
loadDefaultSettingBox];

                                            }];

   

    [shareAction setValue:[[UIImage
imageNamed:@"share.png"]
imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]
forKey:@"image"];

    [loadHelpBox setValue:[[UIImage
imageNamed:@"help.png"]
imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]
forKey:@"image"];

    [loadDefaultSettingBox setValue:[[UIImage
imageNamed:@"defaultSettings.png"]
imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]
forKey:@"image"];

   

    

    [cancelAction setValue:[[UIImage
imageNamed:@"cancel.png"]
imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]
forKey:@"image"];

    //[viewController addAction:loadSettingBox];

    [viewController addAction:shareAction];

    [viewController addAction:loadHelpBox];

    [viewController addAction:loadDefaultSettingBox];

    //[viewController addAction:loadRegLogBox];

    [viewController addAction:cancelAction];

    [self
presentViewController:viewController
animated:YES
completion:nil];

}







内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息