如何使用UITableView自定义UIAlertController,或者在Pages应用程序中是否有像此UI一样的默认控件?

SMS*_*SMS 13 uitableview uiactionsheet ios uialertcontroller

我想实现UIAlertViewController这样的(参考:Pages和Keynote应用程序):

在此输入图像描述.

我已经实现了一个自定义的tableview,并通过模仿来呈现视图UIAlertViewController.但我无法实现与上面类似的用户界面.有没有可用的默认控制器?

-(void)share:(id)sender
{
    [self setModalPresentationStyle:UIModalPresentationCurrentContext];

    AlertViewController *renameCntrl = [self.storyboard instantiateViewControllerWithIdentifier:AlertTblViewidentifier];
    renameCntrl.optionViewDelegate = self;
    renameCntrl.providesPresentationContextTransitionStyle = YES;
    renameCntrl.definesPresentationContext = YES;
    [renameCntrl setModalPresentationStyle:UIModalPresentationOverCurrentContext];
    [self presentViewController:renameCntrl animated:YES completion:nil];
}
Run Code Online (Sandbox Code Playgroud)

Leo*_*ica 9

UIAlertController有一个私有contentViewController属性,允许您将任何子UIViewController类设置为警报控制器的一部分.它适用于操作表或警报样式.您可以将内容视图控制器与其他警报操作混合.

这就是UIActivityViewControllerAirdrop预览控制器等的实现方式.

最好的做法是子类UIAlertController,并在任一 initWithNibName:bundle:或者viewDidLoad,使用setValue:forKey:设置contentViewController属性.不要忘记preferredContentSize为内容视图控制器设置.

  • "最佳做法是对'UIAlertController'进行sublclass"......呃,不.从文档:"UIAlertController类旨在按原样使用,不支持子类化." (5认同)
  • 我绝不怀疑它有效.只是不会认为它是"最佳实践".我没有看到任何关于私有API的OP的提法,就是这样. (5认同)