使用UIPickerView和Done,Next,Previous按钮的UIActionSheet

时间:2011-07-19 19:41:38

标签: iphone xcode uipickerview uisegmentedcontrol uiactionsheet

我正在尝试实现一个操作表,其中包含一个选择器视图和一个带有前一个按钮的分段控制栏,下一个按钮和完成按钮,如下图所示http://imgur.com/8wVMy。我目前能够看起来像http://imgur.com/AXn6H。我想知道是否有人可以帮助我让选择器视图坐在底部,让它看起来好一点。谢谢你的帮助。

2 个答案:

答案 0 :(得分:2)

除非你的目标是非常旧的iOS版本(即3.2之前的版本),否则最好的方法是采用完全不同的方法。

从3.2开始,任何UIResponder(包括所有UIViews)都可以从其inputView属性返回UIView,以便在视图成为第一个响应者时显示该视图而不是键盘。这甚至适用于通常不会成为第一响应者或根本不显示键盘的视图。这很简单:

  1. 设计弹出视图,就像设置其他视图一样。
  2. 确保您的小部件视图从canBecomeFirstResponder返回YES。
  3. 确保您的窗口小部件视图从inputView返回弹出窗口视图的实例。
  4. the documentation中提供了更多详细信息。

    另外,BTW,如果你在iPad上,你应该使用UIPopoverController来显示UIPickerView而不是这些方法中的任何一种。 Apple may actually require this如果您打算在应用商店中获取应用。

答案 1 :(得分:0)

下一个和上一个按钮实际上是将图像显示到segmentedController在工具栏中。要获得它你必须定义segmentedController和UIToolbar。 H.接下来添加DataSource和UIPickerView 然后在viewDidLoad中创建对象并定义其属性。例如:

 if (keyboardToolbar == nil) {
        keyboardToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, 44)];
        [keyboardToolbar setBarStyle:UIBarStyleBlackTranslucent];


        segControl = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"Anterior", @"Siguiente", nil]];
        [segControl setSegmentedControlStyle:UISegmentedControlStyleBar];
        [segControl setTintColor:[UIColor blackColor]];
        segControl.frame = CGRectMake(5, 7, 150, 33);
        segControl.momentary = YES;
        [segControl addTarget:self action:@selector(segSelected:) forControlEvents:UIControlEventValueChanged];

        UIBarButtonItem *extraSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];

        UIBarButtonItem *aceptar = [[UIBarButtonItem alloc] initWithTitle:@"Hecho" style:UIBarButtonItemStyleDone target:self action:@selector(cerrarTeclado:)];

        //aceptar.width = 70.0f;

        [keyboardToolbar setItems:[[NSArray alloc] initWithObjects: extraSpace, aceptar, nil]];
        [keyboardToolbar addSubview:segControl];
    }