有没有办法在不看到它的情况下以模态方式加载视图?我需要访问模态视图控制器上的方法,这些方法又在 XIB 中设置 UI 组件的属性。我想设置这些属性,但我不想马上看到视图。我想在用户旋转手机时显示它。
一切正常,除了解决方案涉及在应用程序加载后立即呈现模式视图。
谢谢,豪伊
有没有办法在不看到它的情况下以模态方式加载视图?我需要访问模态视图控制器上的方法,这些方法又在 XIB 中设置 UI 组件的属性。我想设置这些属性,但我不想马上看到视图。我想在用户旋转手机时显示它。
一切正常,除了解决方案涉及在应用程序加载后立即呈现模式视图。
谢谢,豪伊
在视图控制器中,您可以为另一个控制器创建插座。您需要做的就是在界面生成器的同一个 nib 文件中执行类似这样的操作:
MainController UIViewController
->UIview UIView
ModalController UIViewController
->ModalControllerView UIView
在 MainController.h 中,为视图控制器创建一个 outlet:
@property(nonatomic, retain) IBOutlet ModalController *ModalController
(当然你需要 ivar 并包括)
在 Interface Builder 中,使用选项拖动或您想要的任何方式将 ModalController mainController 连接到 ModalController 视图。
当 nib 加载时,您将 modalController 设置为实例化的 ModalController,然后 MainController 中的方法可以访问 modalController 并对其进行任何操作。然后你只需要使用 presentModalView 来呈现它。
不过,我认为更典型的方法是:
- (IBAction)showInfo {
FlipsideViewController *controller = [[FlipsideViewController alloc] initWithNibName:@"FlipsideView" bundle:nil];
controller.delegate = self;
controller.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:controller animated:YES];
[controller release];
}
(这直接来自 Xcode 中的 Utility Application 项目模板。)
换句话说,创建模态控制器并在它自己的 nib 文件中查看,然后根据需要手动加载 nib 文件。这更节省内存,因为它在实际需要之前不会实例化对象。
你也没有理由不能这样做:
modalController = [[ModalViewController alloc] initWithNibName:@"ModalView" bundle:nil];
在 MainController 的 viewDidLoad 或 initWithCoder 方法或其他东西中,然后根据需要继续配置它。
如果您有另一个视图,您可以使用在现有视图下插入此视图吗
(void)insertSubview:(UIView *)view atIndex:(NSInteger)index
那么当设备旋转时,切换视图?