0

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

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

谢谢,豪伊

4

2 回答 2

1

在视图控制器中,您可以为另一个控制器创建插座。您需要做的就是在界面生成器的同一个 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 方法或其他东西中,然后根据需要继续配置它。

于 2010-01-08T22:38:13.103 回答
0

如果您有另一个视图,您可以使用在现有视图下插入此视图吗

(void)insertSubview:(UIView *)view atIndex:(NSInteger)index

那么当设备旋转时,切换视图?

于 2010-01-08T20:09:27.660 回答