可可iphone加载模态视图没有看到它

时间:2010-01-08 19:16:20

标签: iphone cocoa-touch uikit modal-dialog hidden

有没有办法在没有看到的情况下以模态方式加载视图?我需要访问模态视图控制器上的方法,而模块视图控制器又在XIB中设置UI组件的属性。我想设置这些属性,但我不想立即看到视图。我希望在用户旋转手机时显示它。

一切正常,除了解决方案涉及在应用加载后立即呈现模态视图。

谢谢, 豪伊

2 个答案:

答案 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

然后当设备旋转时,切换视图?