0

Недавно я написал класс, который представляет собой пользовательский листок со стола, на этом листе действий находится панель выбора и панель инструментов. Когда нажата кнопка «Готово» на панели инструментов, уведомление отправляется с выбранным значением pickerview, и лист действий отклоняется. Иногда лист действий исчезает из представления, когда нажата кнопка «Готово», однако оказывается, что модальное свойство этого листа действий остается таким, каким я не могу выбрать что-либо на отображаемом представлении. Перемещение на другую вкладку и возвращение, похоже, решает это. Есть ли у кого-нибудь идеи, что может быть причиной этого?Лист действия не принимается

Ниже приведен код, я использую, чтобы отклонить мой actionsheet:

-(void)doneButtonPressed:(id)sender{ 



    if ([[self viewWithTag:1] isKindOfClass:[PickerView class]]) { 

     PickerView *picker = (PickerView *)[self viewWithTag:1]; 

     if (picker.selectedRow == nil) { 
      [picker populateSelectRowForRow:0 andComponent:0]; 
     } 

     NSNotification *note = [NSNotification notificationWithName:@"doneButtonPressed" object:self.indexPath userInfo:picker.selectedRow]; 

     [[NSNotificationCenter defaultCenter] postNotification:note]; 

    }else { 

     DatePickerView *picker = (DatePickerView *)[self viewWithTag:1]; 

     NSDictionary *extraInfo = [[NSDictionary alloc] initWithObjects:[[NSArray alloc] initWithObjects:[self formatDateToString:[picker date]], nil] forKeys:[[NSArray alloc] initWithObjects:@"value", nil]]; 

     NSNotification *note = [NSNotification notificationWithName:@"doneButtonPressed" object:self.indexPath userInfo:extraInfo]; 

     [[NSNotificationCenter defaultCenter] postNotification:note]; 
    } 


    [self dismissWithClickedButtonIndex:0 animated:YES]; 
} 

и способ уведомления, что называется:

-(void)pickerUpdate:(NSNotification *)note{ 

    NSIndexPath *indexPath = [note object]; 
    NSDictionary *extraInfo = [note userInfo]; 

    NSDictionary *dict = [[tableController.sectionAndFields objectAtIndex:indexPath.section] objectAtIndex:(indexPath.row + kHeaderAndFooterOffset)]; 

    [tableController.formDetails setObject:[extraInfo objectForKey:@"value"] forKey:[dict objectForKey:@"key"]]; 

    NSArray *reloadArray = [[NSArray alloc] initWithObjects:indexPath, nil]; 
    [indexPath release]; 

    [self.tv reloadRowsAtIndexPaths:reloadArray withRowAnimation:NO]; 
    [reloadArray release]; 


} 

Спасибо, что нашли время, чтобы прочитать это довольно длинный пост, Будет ли

+0

второго параметром of -reloadRowsAtIndexPaths: withRowAnimation: `не является` BOOL`; это тип `UITableViewRowAnimation` – user102008 2011-04-27 23:43:16

ответ

0

мне удалось решить эту проблему, однако он чувствует себя очень похож на хак, я ввел задержку в код с помощью:

[self performSelector:@selector(dismissFromActionSheet) withObject:nil afterDelay:0.2]; 

С dismissFromActionSheet существами:

-(void)dismissFromActionSheet{ 
[self dismissWithClickedButtonIndex:0 animated:YES]; 
} 
0

Насколько я знаю, вы должны указать действие: clickedButtonAtIndex method.

-(IBAction)showActionSheet:(id)sender { 
    UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:@"Title" delegate:self cancelButtonTitle:@"Cancel Button" destructiveButtonTitle:@"Destructive Button" otherButtonTitles:@"Other Button 1", @"Other Button 2", nil]; 
    sheet.actionSheetStyle = UIActionSheetStyleBlackOpaque; 
    [sheet showInView:self.view]; 
    [sheet release]; 
} 

-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex { 
    if (buttonIndex == 0) { 
     self.label.text = @"Destructive Button Clicked"; 
    } else if (buttonIndex == 1) { 
     self.label.text = @"Other Button 1 Clicked"; 
    } else if (buttonIndex == 2) { 
     self.label.text = @"Other Button 2 Clicked"; 
    } else if (buttonIndex == 3) { 
     self.label.text = @"Cancel Button Clicked"; 
    } 
} 
+0

Спасибо за отзыв stackr, поэтому я не использую лист действий таким образом. Я использую его для размещения pickerview вместо кнопок, а кнопки, которые я добавляю, - это панель инструментов наверху – williamb 2010-12-10 12:54:21

 Смежные вопросы

  • Нет связанных вопросов^_^