Это проявление неопределенного поведения. Вызовите функцию-член через указатель, который был удален, и что-то идет - компилятор и среда выполнения не обязаны проверять эту ошибку, но вы, конечно же, не можете рассчитывать на эту работу.
Это относится к аналогичная категория, как использование памяти, которая была освобождена - вы можете найти свои старые данные там (или вы не можете). Вы можете вызвать сбой программы (или нет). Вы даже можете изменить данные без каких-либо жалоб.
Но в любом случае это ошибка программирования.
Ага! Наконец-то я его нашел.
реализует следующий код для события нажатия кнопки, чтобы вывести лист действий, как показано на изображении вопроса.
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)];
Еще одно решение:
Нет панели инструментов, кроме сегментированного контроля (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)];
Отличное решение этого вопроса Марсио очень помогло мне при добавлении любых подвидов в таблицу 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];