0

Ich habe vor kurzem eine Klasse geschrieben, die ein benutzerdefiniertes Tabellenblatt aus einer Tabellenzelle darstellt, in diesem Aktionsblatt ist ein Auswahlfenster und eine Symbolleiste. Wenn die Fertig-Schaltfläche in der Symbolleiste gedrückt wird, wird eine Benachrichtigung mit dem ausgewählten Auswahllistenwert gesendet und das Aktionsblatt wird geschlossen. Manchmal verschwindet das Aktionsblatt aus der Ansicht, wenn die Schaltfläche "Fertig" gedrückt wird. Es scheint jedoch, dass die modale Eigenschaft dieses Aktionsblatts so bleibt, als ob ich nichts in der angezeigten Ansicht auswählen kann. Der Wechsel zu einem anderen Tab und das Zurückkommen scheint das zu lösen. Hat jemand irgendwelche Ideen, was könnte das verursachen?Aktionsblatt wird nicht gelöscht

Unten ist der Code, den ich verwende meine actionsheet zu entlassen:

-(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]; 
} 

und die Benachrichtigungsmethode, die aufgerufen wird:

-(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]; 


} 

Dank für die Zeit nehmen diesen ziemlich langen Beitrag zu lesen, Will

+0

den zweiten Parameter von '-reloadRowsAtIndexPaths: withRowAnimation:' ist kein 'BOOL'; es ist ein 'UITableViewRowAnimation' Typ – user102008

Antwort

0

Ich habe es geschafft, dies jedoch zu lösen, ist es sehr ähnlich wie ein Hack fühlt, führte ich eine Verzögerung in den Code verwendet:

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

Mit dismissFromActionSheet Wesen:

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

Soweit ich weiß, sollten Sie die actionSheet: clickedButtonAtIndex Methode ..

-(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

Danke für den Feedback Stack, benutze das Action Sheet in diesem Fall nicht auf diese Weise. Ich benutze es, um einen PickerView anstelle von Schaltflächen zu hosten und die Schaltflächen, die ich hinzufügen, sind als Symbolleiste oben – williamb

Verwandte Themen