0

我对iOS编码很陌生,希望你能帮助我,谢谢。

我在 xib 中添加了一个UIToolBarwith someUIBarButtonItem和 an UIPickerView,并希望将它们添加到UIActionSheetin 代码中。,和是属性UIToolBar,我这样做:UIBarButtonItemUIPickerViewUIActionSheet

_pickerView.frame = CGRectMake(0, 40, 320, 216);
[_actionSheet addSubview:_toolBar];
[_actionSheet addSubview:_pickerView];

如下图所示,它存在一些问题:

  1. UIBarButtonItems不见了
  2. UIToolBar应该是黑色的
  3. 看起来太大了UIPickerView,右边不见了

我知道我可以以编程方式完成所有这些工作,但我认为将 UI 内容放在 xib 中会更好。谁能告诉我如何解决它。

在此处输入图像描述

在此处输入图像描述

4

4 回答 4

2

我建议您查看 Tim Cinel 的 UIActionSheetPicker。对我来说,它真的让这样的事情变得更简单了,而且这些例子真的很容易理解和理解。

这是链接:https ://github.com/skywinder/ActionSheetPicker-3.0

(旧链接https://github.com/TimCinel/ActionSheetPicker

这在 UIPickerView 上方有一个栏,用于显示完成/取消等按钮,但我发现修改代码以更改这些按钮也相对容易。

于 2012-08-06T06:24:04.607 回答
1

为了获得如上图所示的所需结果......我向您推荐编程方法比 xib 方法更好

我认为您正在尝试使用“完成”按钮实现选择器操作表。我将参考使用 segemnt 控件而不是使用工具栏。

在要显示带有选择器和完成按钮的操作表的位置使用以下代码。

UIActionSheet *Example_Actionsheet = [[UIActionSheet alloc] initWithTitle:nil  delegate:self
                                                 cancelButtonTitle:nil  
                                            destructiveButtonTitle:nil
                                                 otherButtonTitles:nil];  

    Ex_Picker = [[UIPickerView alloc] initWithFrame:CGRectMake(0, 40, 0, 0)];
    Ex_Picker.delegate = self;  
    Ex_Picker.showsSelectionIndicator = YES;    // note this is default to NO  
    Example_Actionsheet.actionSheetStyle = UIActionSheetStyleBlackOpaque;
    [Example_Actionsheet addSubview:Bedroom_Picker];  
    [Example_Actionsheet showInView:self.view]; 
    [Example_Actionsheet setBounds:CGRectMake(0, 0, 320, 485)];

    UISegmentedControl *closeButton = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObject:@"Done"]];
    closeButton.momentary = YES; 
    closeButton.frame = CGRectMake(260, 7.0f, 50.0f, 30.0f);
    closeButton.segmentedControlStyle = UISegmentedControlStyleBar;
    closeButton.tintColor = [UIColor blueColor];
    [closeButton addTarget:self action:@selector(Close_method) forControlEvents:UIControlEventValueChanged];
    [Example_Actionsheet addSubview:closeButton];
    [Example_Actionsheet release];

如果你想使用工具栏

pickerDateToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
pickerDateToolbar.barStyle = UIBarStyleBlackOpaque;
[pickerDateToolbar sizeToFit];

NSMutableArray *barItems = [[NSMutableArray alloc] init];

UIBarButtonItem *flexSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];
[barItems addObject:flexSpace];

UIBarButtonItem *doneBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(DatePickerDoneClick)];
[barItems addObject:doneBtn];

[pickerDateToolbar setItems:barItems animated:YES];

并在操作表的子视图中添加工具栏和选择器。

[aac addSubview:"Your toolbar"];
[aac addSubview:"Your picker"];

并设置动作表框架。它使用工具栏完成。

于 2012-08-06T06:10:56.443 回答
0

以下代码用于将工具栏添加为子视图。

-(IBAction)btnOption:(id)sender{

            self.tBar.frame=CGRectMake(0, 0, 320, 44);
            self.pkrMain.frame=CGRectMake(0, 47, 320, 216);

           self.act=[[UIActionSheet alloc] initWithTitle:lblReam delegate:self cancelButtonTitle:lblOk destructiveButtonTitle:@"Cancel" otherButtonTitles:@"OptionA",@"OptionB",nil];

            [self.act addSubview:self.tBar];
            [self.act addSubview:self.pkrMain];

            [self.pkrMain reloadAllComponents];
            [self.act clipsToBounds];
            [self.act showInView:[UIApplication sharedApplication].keyWindow];
        }
于 2012-08-06T06:23:46.373 回答
0

最后,我添加了一个UIView来包装工具栏和选择器,然后将其添加到UIActionSheet代码中:

[_actionSheet addSubview:_wrapper];

这样做后布局很好。

于 2012-08-08T01:42:52.857 回答