添加UIPickerView&一个按钮在行动表-如何?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (18)

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

  • UIToolbar
  • UIToolbar上的按钮
  • UIPicker控制

请你解释一下,这是如何实现的?

提问于
用户回答回答于

iOS 7的最新情况

用于UIActionSheet的苹果文档:UIActionSheet不是被设计为子类,也不应将视图添加到其层次结构中

建议不要尝试自定义ActionSheet的内容,因为它会导致IOS 7中严重的无效上下文错误。

这很好,因为我可以在5到6个不同的屏幕之间重用它,在这些屏幕上,我所有的用户都可以从选项列表中进行选择。

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

若要使用,请在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];
用户回答回答于

还有一个解决办法:

  • 没有工具栏,只有分段控件(Eyecandy) UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:nil delegate:nil cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:nil]; [actionSheet setActionSheetStyle:UIActionSheetStyleBlackTranslucent]; CGRect pickerFrame = CGRectMake(0, 40, 0, 0); UIPickerView *pickerView = [[UIPickerView alloc] initWithFrame:pickerFrame]; pickerView.showsSelectionIndicator = YES; pickerView.dataSource = self; pickerView.delegate = self; [actionSheet addSubview:pickerView]; [pickerView release]; UISegmentedControl *closeButton = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObject:@"Close"]]; closeButton.momentary = YES; closeButton.frame = CGRectMake(260, 7.0f, 50.0f, 30.0f); closeButton.segmentedControlStyle = UISegmentedControlStyleBar; closeButton.tintColor = [UIColor blackColor]; [closeButton addTarget:self action:@selector(dismissActionSheet:) forControlEvents:UIControlEventValueChanged]; [actionSheet addSubview:closeButton]; [closeButton release]; [actionSheet showInView:[[UIApplication sharedApplication] keyWindow]]; [actionSheet setBounds:CGRectMake(0, 0, 320, 485)];

扫码关注云+社区