Chcę pokazać konkretny kontroler ViewController (lub odrzucić) widok po wykonaniu IBAction w mojej aplikacji na iPhone'a. Próbowałem
[self.parentViewController.parentViewController dismissModalViewControllerAnimated:YES];
Jednak po wykonaniu czynności nie wydaje się to nic robić.
Trochę więcej informacji:
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *selectedCell = [tableView cellForRowAtIndexPath:indexPath];
if (selectedCell.tag == 1)
{
UIActionSheet *actionSheet = [[UIActionSheet alloc]
initWithTitle:@"Are you sure you want to delete this project?"
delegate:self cancelButtonTitle:@"No" destructiveButtonTitle:@"Yes, I’m Sure" otherButtonTitles:nil];
[actionSheet showInView:self.view];
}
}
- (void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex
{
if (buttonIndex != [actionSheet cancelButtonIndex])
{
[self.tableView beginUpdates]; // Avoid NSInternalInconsistencyException
// Delete the project object that was swiped
Project *projectToDelete = self.project;
NSLog(@"Deleting (%@)", projectToDelete.name);
[self.managedObjectContext deleteObject:projectToDelete];
[self.managedObjectContext save:nil];
}
}
Chcę, aby bieżący widok zniknął, gdy użytkownik naciśnie przycisk Tak w arkuszu działań.
Odpowiedzi:
1 dla odpowiedzi № 1// Assume we are inside a UIViewController (or a subclass)
DestinationController *destinationController = [[DestinationController alloc] init];
[self presentModalViewController:destinationController animated:YES];
...
// Assume we are now in destination controller
// Dismiss
[self dismissModalViewControllerAnimated:YES];
1 dla odpowiedzi nr 2
Musiałem wrócić do pierwszego (lub głównego) widoku w moim stosie nawigacyjnym.
Wszystko, co musiałem zrobić, to użyć tej metody:
[controller.navigationController popToRootViewControllerAnimated:YES];
0 dla odpowiedzi № 3
Innym sposobem pokazania i odrzucenia kontrolera widoku jest użycie pushViewController i popViewController.
Aby wyświetlić viewController:
- (void) pushViewController: (UIViewController *) viewController animated: (BOOL) animated; // Używa poziomego przejścia slajdu. Nie działa, jeśli kontroler widoku jest już na stosie.
I zwolnić:
- (UIViewController *) popViewControllerAnimated: (BOOL) animated; // Zwraca wystrzelony kontroler.