【问题标题】:Hide ActionSheet iOS隐藏操作表 iOS
【发布时间】:2014-01-21 11:20:57
【问题描述】:

我的应用程序是关于单击一个带有名为“uploadphoto1.png”的背景图像的按钮。当我单击该按钮时,它会显示一个 ActionSheet,让我选择使用相机拍照或从库中拍照。 例如,当我从相机中选择一张图片时,它让我选择一张图片并在 imageView 中显示图片,并将按钮的背景图片从 upload.png 更改为 save.png。 现在的问题是,当我单击带有背景图像“save1.png”的按钮时,它会向我显示 actionSheet。 我想隐藏 actionSheet。

代码如下:

- (void)viewDidLoad
{
[super viewDidLoad];
 UIImage *buttonpicture =[UIImage imageNamed:@"uploadphoto1.png"];
[ButtonPicture setBackgroundImage:buttonpicture forState:UIControlStateNormal];
[ButtonPicture setFrame:CGRectMake(173, 269, 140, 30)];
 }

- (IBAction)ButtonPicture:(UIButton *)sender
{
NSLog(@"Button Picture Pressed");
UIActionSheet *actionSheet = [[UIActionSheet alloc]initWithTitle:@"Photo" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"Picture From Camera",@"Picture From Gallery",nil];

[actionSheet setTag:1001];
[actionSheet showInView:self.view];

}

-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
switch (buttonIndex)
{
    case 0:
    {
        // Take a picture from camera
        UIImagePickerController * picker = [[UIImagePickerController alloc] init];
        picker.delegate = self;

        picker.sourceType = UIImagePickerControllerSourceTypeCamera;
        [self presentModalViewController:picker animated:YES];
    }
        break;
    case 1:
    {
        // take a picture from gallery photos
        UIImagePickerController * picker = [[UIImagePickerController alloc] init];
        picker.delegate = self;
        picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
        [self.view addSubview:toolbar];
        [self presentModalViewController:picker animated:YES];

    }
        break;
    default:
    break;    }

   }

   - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
[ButtonPicture setBackgroundImage:[UIImage imageNamed:@"save1.png"] forState:UIControlStateNormal];
[picker dismissModalViewControllerAnimated:YES];
imageview.image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
//[actionSheet showInView:Nil];

  }

【问题讨论】:

    标签: ios objective-c uiactionsheet


    【解决方案1】:
    @interface YourViewController
    {
        BOOL imageChanged;
    }
    
    
    
    - (void)viewDidLoad
    {
         [super viewDidLoad];
         imageChanged = NO;
         UIImage *buttonpicture =[UIImage imageNamed:@"uploadphoto1.png"];
         [ButtonPicture setBackgroundImage:buttonpicture forState:UIControlStateNormal];
         [ButtonPicture setFrame:CGRectMake(173, 269, 140, 30)];
    }
    
    - (IBAction)ButtonPicture:(UIButton *)sender
    {
         NSLog(@"Button Picture Pressed");
         UIActionSheet *actionSheet = [[UIActionSheet alloc]initWithTitle:@"Photo"        delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"Picture From Camera",@"Picture From Gallery",nil];
    
         [actionSheet setTag:1001];
         if (!imageChanged)
              [actionSheet showInView:self.view];
    
    }
    
    -(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
    {
        switch (buttonIndex)
        {
            case 0:   
            // Take a picture from camera
            UIImagePickerController * picker = [[UIImagePickerController alloc] init];
            picker.delegate = self;
            picker.sourceType = UIImagePickerControllerSourceTypeCamera;
            [self presentModalViewController:picker animated:YES];
            break;
            case 1:
            // take a picture from gallery photos
            UIImagePickerController * picker = [[UIImagePickerController alloc] init];
            picker.delegate = self;
            picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
            [self.view addSubview:toolbar];
            [self presentModalViewController:picker animated:YES];
            break;
            default:
            break;   
         }
    
     }
    
     - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
           [ButtonPicture setBackgroundImage:[UIImage imageNamed:@"save1.png"] forState:UIControlStateNormal];
           imageChanged = YES;
           [picker dismissModalViewControllerAnimated:YES];
           imageview.image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
     }
    

    【讨论】:

      【解决方案2】:

      有多种方法可以处理这种情况。一种方法是在您不想点击按钮以调出 actionSheet 时设置一个布尔标志。然后,在- (IBAction)ButtonPicture:(UIButton *)sender 中,您可以检查布尔标志来决定是否创建actionSheet 并显示它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-03-18
        • 1970-01-01
        • 2015-06-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-19
        • 1970-01-01
        相关资源
        最近更新 更多