uialertview内的uisegmentControl

时间:2013-05-30 11:38:24

标签: uialertview uisegmentedcontrol

我想在uialertview中显示段控件。

UISegmentedControl * progress = [[UISegmentedControl alloc] initWithFrame:CGRectMake(0,0,30,30)];

[alert addSubview:progress];   [提示显示];

我不行。但是如果我将其更改为uiprogressview它会显示出来。但是段控制没有添加到alertview。

不知道这里缺少什么。

2 个答案:

答案 0 :(得分:2)

如果您查看第一个屏幕文字in the UIAlertView documentation,您会看到此非常重要注意:

  

子类注释

     

UIAlertView类旨在按原样使用   并且不支持子类化。 此类的视图层次结构是   私人,不得修改

修改私有且不应修改的内容意味着:在最好的情况下,在未来版本的iOS中,您的应用可能会发生意外的坏事;在最糟糕的情况下,如果Apple有机会检测哪些应用程序正在使用UIAlertView层次结构,那么您的应用可能会被拒绝。

要解决您的问题,您应该创建自己的警报实现,子类UIView,并将分段控制器添加到那个,并将其用作UIAlertView替代品。

答案 1 :(得分:1)

you have to use adding subView in alertView's delegate method because alertView calculates its frame before showing to user.

UIAlertView *alertView=[[UIAlertView alloc] initWithTitle:@"Hello SubViews" message:nil delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil];
[alertView show];

- (void)willPresentAlertView:(UIAlertView *)alertView
{
    CGFloat height = 25.0;

    UILabel *firstLabel = (UILabel*)[[alertView subviews] objectAtIndex:1];
    CGRect label_rect=firstLabel.frame;

    UISegmentedControl *segment=[[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"Me",@"And",@"You",nil]];
    segment.segmentedControlStyle=UISegmentedControlStyleBar;
    [segment setFrame:CGRectMake(label_rect.origin.x, label_rect.origin.y+label_rect.size.height,label_rect.size.width,height)];

    UITextField *textField = [[UITextField alloc] initWithFrame:CGRectOffset(segment.frame, 0, height + 4)];
    [textField setText:@"Enter some text"];
    [textField setBackgroundColor:[UIColor whiteColor]];

    UIButton *okBtn=(UIButton*)[[alertView subviews] objectAtIndex:2];
    [okBtn setFrame:CGRectOffset(textField.frame, 0, height + 4)];

    [alertView addSubview:segment];
    [alertView addSubview:textField];

    alertView.frame = CGRectUnion(alertView.frame, CGRectOffset(alertView.frame, 0, 40));

}

输出----------------

enter image description here

相关问题