In meiner app delegieren, ich erstelle eine Registerkarte-Controller mit einem Bündel von Ansicht-Controller für es und dann eine separate UIViewController, die ich als die oberste Ansicht zeigen, bis der Benutzer eine bestimmte Aktion ausführt.
Ich bin zunächst meine Registerkarte Controller mit dem zweiten Controller abdecken, aber schließlich, der zweite Controller wird über "removeFromSuperview" entlassen. Jedoch, nachdem dies geschieht, wird die Registerkarte Controller-Ansicht nicht auf alle taps oder jede UI-Interaktion reagieren. Meine App ist nicht aufgehängt, wie ich die Verarbeitung passieren sehen kann.
Gibt es eine Möglichkeit, den Tab-Controller zum De-facto-Responder zu machen, nachdem die oberste Ansicht beendet wurde?
Hier ist, wie ich zunächst beide Viewcontroller erstellen:
{
// main navigation controller is a tab bar
UITabBarController *tabBarController = [[UITabBarController alloc] init];
tabBarController.viewControllers = [NSArray arrayWithObjects: controller1,
controller2,
controller3, nil];
// Add the tab bar to the view
[window addSubview:tabBarController.view];
// Creating the 2nd navigation controller - covering up the tab bar
// temporarily
UIViewController *viewController = [[MySecondViewController alloc]
initWithNibName:@"SomeView"
bundle:nil];
UINavigationController *navController = [[UINavigationController alloc]
initWithRootViewController:viewController];
[viewController release];
// Configure and show the second navigation controller
[window addSubview:[navController view]];
// Make everything visible
[window makeKeyAndVisible];
}
Wie die oberste Ansicht abgetan wird:
@interface MySecondViewController : UIViewController
{
}
-(void)dismissMe;
@end
@implementation MySecondViewController
-(void)dismissMe
{
// Here, the this view is getting removed
[self.view removeFromSuperview];
}
@end
Ich möchte nicht, dass die oberste Ansicht so aussieht, als würde ich einen modalen Dialog hinzufügen, und ich möchte, dass der Bildschirm da ist, sobald die App gestartet wird.