我的应用程序要求在操作表中添加以下内容.

  • Utoolbar
  • Button on Utoolbar
  • UIPicker控制

我附上了一张图片,以了解我的需求.

ALT Text

您能解释一下,这是如何实施的吗?

推荐答案

Update for iOS 7

Apple docs for UIActionSheet:UIActionSheet is not designed to be subclassed, nor should you add views to its hierarchy

我建议不要try 自定义操作表的内容,因为它可能会导致iOS 7中严重的无效上下文错误.我只是花了几个小时来解决这个问题,最终决定采取不同的方法.我将显示操作表的调用替换为包含简单tableview的模态视图控制器.

有很多方法可以实现这一点.以下是我刚刚在当前项目中实现的一种方法.这很好,因为我可以在5到6个不同的屏幕之间重复使用它,所有用户都可以从选项列表中进行 Select .

  1. 创建一个新的UITableViewController子类SimpleTableViewController.
  2. 在情节提要(嵌入导航控制器)中创建UITableViewController,并将其自定义类设置为SimpleTableViewController.
  3. 为SimpleTableViewController的导航控制器提供脚本ID"SimpleTableVC".
  4. 在SimpleTableViewController.h中,创建将表示表中数据的NSArray属性.
  5. 同样在SimpleTableViewController.h中,使用必需的方法itemSelectedatRow:和称为类型id<SimpleTableViewControllerDelegate>的委托的弱属性创建协议SimpleTableViewControllerDelegate.这就是我们将 Select 传递回父控制器的方式.
  6. 在SimpleTableViewController.m中,实现tableview数据源和委托方法,在tableView:didSelectRowAtIndexPath:中调用itemSelectedatRow:.

这种方法还有一个额外的好处,那就是具有相当高的可重用性.要使用,请在ViewController.h中导入SimpleTableViewController类,符合SimpleTableViewDelegate,并实现itemSelectedAtRow:方法.然后,要打开该模式,只需实例化一个新的SimpleTableViewController,设置表数据和委托,然后呈现它.

UINavigationController *navigationController = (UINavigationController *)[self.storyboard instantiateViewControllerWithIdentifier:@"SimpleTableVC"];
SimpleTableViewController *tableViewController = (SimpleTableViewController *)[[navigationController viewControllers] objectAtIndex:0];
tableViewController.tableData = self.statesArray;
tableViewController.navigationItem.title = @"States";
tableViewController.delegate = self;
[self presentViewController:navigationController animated:YES completion:nil];

我创建了一个简单的示例和posted it on github.

另见Showing actionsheet causes CGContext invalid context errors.

Ios相关问答推荐

PieChartView未以编程方式显示在屏幕上

ITMS—91053:Flutter Project中缺少API声明

SwiftUI@Observable不跟踪父类属性中的更改以更新视图

如何在SwiftUI中以一定Angular 绘制直线(&A)

从后台线程调用DispatchObject的方法安全吗?

拖动手势导致 sim 崩溃 Swift UI

在 SwiftUI 中以编程方式插入内嵌图像

ITMS-90725 无用的错误信息,因为它自相矛盾,苹果上传

如何在 SwiftUI 中将选项卡放在滚动视图中?

通过函数使用 Gesture 时,键入任何视图不能符合视图

Flutter:无法构建 iOS 应用程序ARCHIVE FAILED,为设备归档时遇到错误

setNeedsLayout 和 setNeedsDisplay

try 在 iOS 中处理后退导航按钮操作

aps-environment 始终在发展

iOS UITextView 或 UILabel 带有可点击的动作链接

Swift - 获取设备的 WIFI IP 地址

从故事板导航到其他 Swift 1.2 文件时 Xcode 6.3 崩溃

如何使用 AFNetworking 设置超时

如何在 iOS 中获取正在运行的应用程序的名称

Info.plist 实用程序错误:无法打开 Info.plist,因为没有这样的文件