Добавить UIPickerView и кнопку в листе действий - как?

Это проявление неопределенного поведения. Вызовите функцию-член через указатель, который был удален, и что-то идет - компилятор и среда выполнения не обязаны проверять эту ошибку, но вы, конечно же, не можете рассчитывать на эту работу.

Это относится к аналогичная категория, как использование памяти, которая была освобождена - вы можете найти свои старые данные там (или вы не можете). Вы можете вызвать сбой программы (или нет). Вы даже можете изменить данные без каких-либо жалоб.

Но в любом случае это ошибка программирования.

120
задан TheNeil 20 May 2019 в 14:55
поделиться

3 ответа

Ага! Наконец-то я его нашел.

реализует следующий код для события нажатия кнопки, чтобы вывести лист действий, как показано на изображении вопроса.

UIActionSheet *aac = [[UIActionSheet alloc] initWithTitle:@"How many?"
                                             delegate:self
                                    cancelButtonTitle:nil
                               destructiveButtonTitle:nil
                                    otherButtonTitles:nil];

UIDatePicker *theDatePicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0.0, 44.0, 0.0, 0.0)];
if(IsDateSelected==YES)
{
    theDatePicker.datePickerMode = UIDatePickerModeDate;
    theDatePicker.maximumDate=[NSDate date];
}else {
    theDatePicker.datePickerMode = UIDatePickerModeTime;
}

self.dtpicker = theDatePicker;
[theDatePicker release];
[dtpicker addTarget:self action:@selector(dateChanged) forControlEvents:UIControlEventValueChanged];

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:pickerDateToolbar];
[aac addSubview:dtpicker];
[aac showInView:self.view];
[aac setBounds:CGRectMake(0,0,320, 464)];
32
ответ дан 24 November 2019 в 01:36
поделиться

Еще одно решение:

  • Нет панели инструментов, кроме сегментированного контроля (Eyecandy)

     UiabactionSHeet * ActionHeet = [[UiabaccessHeet Alloc] initWithTitle: Nil
      Делегат: Nil.
      Отмена Kuttontitle: Nil.
      РазрушительныйБуттонтитель: ноль
      ovolbuttontitles: nil];
    
     [ActionSheet SetaCtionsheetStyle: UiacationsHeetStyleblackTransLuclucent];
    
    CGRECT PickerFrame = CGrectmake (0, 40, 0, 0);
    
    Uipickerview * pickerview = [[uipickview alloc] initwithframe: pickerframe];
    Pickerview.showsselectionIndicator = Да;
    pickerview.datasource = self;
    pickerview.delegate = self;
    
     [ActionHeet AddsubView: Pickerview];
     [Выпуск пикера];
    
    UisegledControl * Closebutton = [[USEMESTEDEDCONTROL ALLOC] initWithitems: [NSARRAY ARRAYWITHOBJECT: @ «Закрыть»]];
    closebutton.momentary = Да;
    Closebutton.frame = cgrectmake (260, 7.0f, 50.0f, 30.0f);
    Closebutton.segmentedControlStyle = UisegledControlStylebar;
    Closebutton.tintcolor = [UiColor BlackColor];
     [Closebutton AddTarget: Action Action: @selector (увольнения) :) Forcontrolevents: UiControleventValueChanged];
     [ActionHeet Addsubview: Closebutton];
     [Выпуск Closebutton];
    
     [ActionHeet ShowInView: [[ShareDationation Uiacaplication] KeyWindow]];
    
     [ActionHeet Setbounds: CGRUTMAKE (0, 0, 320, 485)];
     
111
ответ дан 24 November 2019 в 01:36
поделиться

Отличное решение этого вопроса Марсио очень помогло мне при добавлении любых подвидов в таблицу UIActionSheet.

По причинам, которые (пока) мне не совсем понятны, границы UIActionSheet могут быть установлены только после того, как он был отображен; оба решения sagar и marcio успешно решают эту проблему с помощью сообщения setBounds: CGRectMake (...), отправляемого в таблицу действий после того, как оно отображается.

Однако установка границ UIActionSheet после того, как лист был отображен, создает скачкообразный переход, когда появляется ActionSheet, где он «выскакивает» в поле зрения, а затем прокручивает только последние 40 пикселей или около того.

При изменении размера UIPickerView после добавления подпредставлений я рекомендую заключить сообщение setBounds, отправленное в actionSheet, внутрь блока анимации. Это сделает вход в actionSheet более плавным.

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


// add one or more subviews to the UIActionSheet
// this could be a UIPickerView, or UISegmentedControl buttons, or any other 
// UIView.  Here, let's just assume it's already set up and is called 
// (UIView *)mySubView
[actionSheet addSubview:myView];

// show the actionSheet
[actionSheet showInView:[UIApplication mainWindow]];


// Size the actionSheet with smooth animation
    [UIView beginAnimations:nil context:nil];
    [actionSheet setBounds:CGRectMake(0, 0, 320, 485)];
    [UIView commitAnimations]; 
10
ответ дан 24 November 2019 в 01:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: