我有一个视图即时制作,它将包含已在2个不同控制器中布局的功能。一种混合动力。
我想知道我是如何在结构上处理这种方法的?由于现有视图使用选择器和几个代表发送到他们的控制器,但是新视图理想地希望访问几个控制器功能。所以我不能只选择控制器,因为它只与一个连接? (能够使用self.viewController)
例如,当前视图功能使用:
[self.viewController performSelector:@selector(getParBusFader:) withObject:[NSNumber numberWithInteger:_busOffset - 1]];
如果我想从我的新视图中访问它,我不能使用self.viewController,因为它有一个不同的控制器,它从其中获取其他功能。
这里有任何解决方案,所以我可以将视图的不同元素发送给不同的控制器并防止重复?
我可以在本地实例化控制器实例并以这种方式访问它吗?
干杯
答案 0 :(得分:0)
阅读容器和子视图控制器。如果需要,您可以添加多个“儿童”。使用Interface Builder时,您可以添加UIContainerView
对象,并为您处理设置。
这是一个非常简单的例子:
//
// QuickTestViewController.h
//
#import <UIKit/UIKit.h>
#import "FirstChildViewController.h"
@interface QuickTestViewController : UIViewController
@property (strong, nonatomic) FirstChildViewController *fcVC;
@end
//
// QuickTestViewController.m
//
#import "QuickTestViewController.h"
@interface QuickTestViewController ()
@end
@implementation QuickTestViewController
- (void)viewDidLoad {
[super viewDidLoad];
// instantiate a FirstChildViewController
_fcVC = [[FirstChildViewController alloc] init];
// add it as a Child View Controller
[self addChildViewController:_fcVC];
// configure its view and add the view to self.view
_fcVC.view.frame = CGRectMake(10, 50, 200, 100);
_fcVC.view.backgroundColor = [UIColor blueColor];
[self.view addSubview:_fcVC.view];
// tell FirstChildViewController we're finished adding it
[_fcVC didMoveToParentViewController:self];
}
- (IBAction)btnTapped:(id)sender {
// call a method in FirstChildViewController
[_fcVC performSelector:@selector(getParBusFader:) withObject:[NSNumber numberWithInteger:5]];
}
@end
//
// FirstChildViewController.h
//
#import <UIKit/UIKit.h>
@interface FirstChildViewController : UIViewController
- (void)getParBusFader:(NSNumber *)x;
@end
//
// FirstChildViewController.m
//
#import "FirstChildViewController.h"
@interface FirstChildViewController ()
@end
@implementation FirstChildViewController
- (void)getParBusFader:(NSNumber *)x {
NSLog(@"passed value: %ld", (long)x.integerValue);
}
@end