UIActionsheet не увольнять
У меня есть 3 кнопки в моем UIActionsheet. Я хочу одну кнопку отмены внизу.
Я также хочу, чтобы все кнопки могли отклонять UIActionsheet.
В настоящее время никто из них не делает эту работу за меня.
Вот как я это отображаю:
UIActionSheet *actionSheet = nil;
NSArray *otherButtons = nil;
otherButtons = [NSArray arrayWithObjects:@"Button1", @"Button2", @"Button3",
nil];
actionSheet = [[UIActionSheet alloc] initWithTitle:title
delegate:self cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:nil, nil];
for( NSString *btntitle in otherButtons)
{
[actionSheet addButtonWithTitle:btntitle];
}
[actionSheet addButtonWithTitle:@"Cancel"];
actionSheet.cancelButtonIndex = actionSheet.numberOfButtons - 1;
actionSheet.actionSheetStyle = UIActionSheetStyleDefault;
[actionSheet showInView:self.view];
В моем делегате я делаю это:
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
//some code
[actionSheet dismissWithClickedButtonIndex:buttonIndex animated:YES];
}
Но это не увольняет. Я не хочу менять свой дизайн и положение каких-либо кнопок. Что я должен делать?
5 ответов
-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex{
[actionSheet dismissWithClickedButtonIndex:buttonIndex animated:YES];
[self performSelector:@selector(OtherOperations) withObject:nil afterDelay:0.0];
}
-(void)OtherOperations{ //some code
}
Будьте осторожны при открытии листа действий с lpgr. Только откройте его на "Начал", а не снова на "Завершено".
- (void) handleLongPress:(UILongPressGestureRecognizer *)gestureRecognizer
{
CGPoint p = [gestureRecognizer locationInView:self.tblYourVids];
if (gestureRecognizer.state == UIGestureRecognizerStateBegan) {
NSIndexPath *indexPath = [self.aTable indexPathForRowAtPoint:p];
if (indexPath == nil)
NSLog(@"long press on table view but not on a row");
else {
NSLog(@"long press on table view at row %d", indexPath.row);
self.selectedCell = [self.aTable cellForRowAtIndexPath:indexPath];
DLog(@"open action sheet only once");
[self showActionSheet];
}
} else if (gestureRecognizer.state == UIGestureRecognizerStateEnded) {
// eat this one
}
}
Вы должны добавить это в свой.h файл.
<UIActionSheetDelegate>
Также добавьте эту строку в ваш.m файл.
actionSheet.delegate = self;
Дайте мне знать, это работает или нет. Если работает, примите это как правильный ответ
Просто попробуйте использовать приведенный ниже код. он будет автоматически отклонен.
UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:@""
delegate:self
cancelButtonTitle:@"cancel"
destructiveButtonTitle:@"Printer"
otherButtonTitles: nil];
[sheet showInView:self.view];
[sheet release];
-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
}
дайте мне знать, работает ли он или нет
Удачного кодирования!!!!!
Это не правильный способ отменить UIActionSheet
во-первых, вы должны отключить по умолчанию UIActionSheet
от javascipt
и пройти через эту сеть
http://www.icab.de/blog/2010/07/11/customize-the-contextual-menu-of-uiwebview/