【问题标题】:How change UIactionsheet to Popover?如何将 UIactionsheet 更改为 Popover?
【发布时间】:2016-03-11 05:52:46
【问题描述】:

使用此代码打开操作表。 在 iPhone 上完美运行,但在 iPad 上崩溃。我认为这是因为arm64。可能我必须将 Actionsheet 转换为弹出框。

如何更改此代码?

- (void)pushedNewBtn
{
    UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"Camera", @"Photo Library", nil];
    [sheet showInView:self.view.window];
}

【问题讨论】:

  • UIActionSheet 已弃用。除非您需要支持 iOS 7,否则您应该使用 UIAlertController
  • 顺便说一句 - 当您发布有关崩溃的问题时,您需要在问题中包含有关崩溃的详细信息。请使用这些详细信息更新您的问题。

标签: ios popover uiactionsheet


【解决方案1】:

为了正确使用UIAlertViews,您需要使用委托方法来响应按下的按钮。
在您的头文件中,您需要以下内容
@interface ViewController : UIViewController <UIAlertViewDelegate>

您已使用以下行 delegate:self 正确设置了 UIAlertView 变量的委托。

现在,一旦您按下UIAlertView 中的按钮,委托将调用以下方法

-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex

然后,您可以使用类似于此的代码来响应那里的按钮按下

switch (buttonIndex) {
    case 0:
        //Cancel button code goes here if needed
        break;
    case 1:
        //First 'other' button code goes here
        break;
    case 2:
        //second 'other' button code goes here
        break;
    default:
        break;
}

希望对你有帮助

【讨论】:

  • 如果这已经回答了您的问题,那么请用打勾将其标记为已接受的答案。谢谢。
【解决方案2】:

这是工作结果:

 - (void)pushedNewBtn {
    UIAlertView *sheet = [[UIAlertView alloc] initWithTitle:nil message:nil delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Camera", @"Photo Library", nil];
    [sheet show];
}

- (void)libraryButton {
    UIImagePickerController *pickerLibrary = [[UIImagePickerController alloc] init];
    pickerLibrary.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
    pickerLibrary.delegate = self;
    [self presentModalViewController:pickerLibrary animated:YES];

}

- (void)cameraButton {
    UIImagePickerController *picker = [[UIImagePickerController alloc] init];
    picker.delegate = self;
    picker.allowsEditing = YES;
    picker.sourceType = UIImagePickerControllerSourceTypeCamera;

    [self presentViewController:picker animated:YES completion:NULL];
 }

#pragma mark- alertView delegate PICKER


- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {

    switch (buttonIndex) {

        case 0:
            return;
            break;
        case 1:
            [self cameraButton];
            break;
        case 2:
            [self libraryButton];
            break;
        default:
            break;
    }
}

但现在我有新问题, 我想插入一个新的 alertviev 但不起作用

    - (void)pushedSaveBtn {

    UIAlertView *sheet2 = [[UIAlertView alloc] initWithTitle:nil message:nil delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Save", nil];
    [sheet2 show];
}

- (void)savemeButton {

   //codice da inserire
}

#pragma mark- alertView2 delegate SAVER


- (void)alertView2:(UIAlertView *)alertView2 clickedButtonAtIndex:(NSInteger)buttonIndex {

    switch (buttonIndex) {

        case 0:
            return;
            break;
        case 1:
            [self savemeButton];
            break;
        default:
            break;
    }
}

【讨论】:

  • 这是一个单独的问题。你应该做一个新的。答案是设置警报的标签,并在clickedButtonAtIndex 方法中输入if 命令来检查传入警报视图的标签是什么
猜你喜欢
  • 2017-06-25
  • 1970-01-01
  • 2014-11-03
  • 1970-01-01
  • 2015-03-10
  • 2017-10-15
  • 1970-01-01
  • 2015-05-14
  • 1970-01-01
相关资源
最近更新 更多