有没有办法在没有看到的情况下以模态方式加载视图?我需要访问模态视图控制器上的方法,而模块视图控制器又在XIB中设置UI组件的属性。我想设置这些属性,但我不想立即看到视图。我希望在用户旋转手机时显示它。
一切正常,除了解决方案涉及在应用加载后立即呈现模态视图。
谢谢, 豪伊
答案 0 :(得分:1)
在视图控制器中,您可以为另一个控制器创建一个插座。您只需在界面构建器中的同一个nib文件中执行此操作:
MainController UIViewController
->UIview UIView
ModalController UIViewController
->ModalControllerView UIView
在MainController.h中,为视图控制器创建一个插座:
@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方法中,然后根据需要继续配置它。
答案 1 :(得分:0)
如果您有其他视图,可以使用
在现有视图下插入此视图吗?(void)insertSubview:(UIView *)view atIndex:(NSInteger)index
然后当设备旋转时,切换视图?