多个UIViewController同时工作?

时间:2010-07-08 09:23:37

标签: iphone uiviewcontroller

多个UIViewControllers是否可以同时工作?请考虑以下窗口:

         +-----------------+         
         |  +-----+        |
         |  |     |        |
         |  |  A  |    C   |
         |  |     |        |
         |  +-----+        |
         |                 |
         |       +-----+   |
         |       |  B  |   |
         |       +-----+   |
         |                 |
         +-----------------+

C是第一个添加到窗口的UIViewController。

在C_ViewController的viewDidLoad中,我添加了一个NIB(A):

A_ViewController *avc = [[A_ViewController alloc] initWithNibName:@"A_ViewController" bundle:nil];
[self.view addSubview:avc.view];
[avc release];

加载A_ViewController并正确显示。但是,如果将A_ViewController.xib中的任何事件链接到A_ViewController.m中的IBOutlet(例如buttonClick),则触发事件时会出错:

  

***由于未被捕获而终止应用   例外   'NSInvalidArgumentException',原因:   ' - [NSCFString buttonClicked:]:   无法识别的选择器发送到实例   0x5937a40'

问题是,是否可以让多个UIViewController同时工作?在此示例中,一个用于C,一个用于A,另一个用于B

ADDED:C_ViewController的头文件

    @class A_ViewController;

    @interface C_ViewController : UIViewController {
        A_ViewController *avc;
    }

    @property (nonatomic, retain) IBOutlet A_ViewController *avc;

    @end

解决方案:

  A_ViewController *a = [[A_ViewController alloc] initWithNibName:@"A_ViewController" bundle:nil];
  [self.view addSubview:a.view];
  self.avc = a; // added this to fix!! Thanks
  [a release];

1 个答案:

答案 0 :(得分:0)

您是否尝试过保留A_ViewController实例? 我不确定它的视图是否保留了viewcontroller。