使用嵌入Segue公司将数据传入容器视图
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用嵌入Segue公司将数据传入容器视图相关的知识,希望对你有一定的参考价值。
因此,我已经看到大部分的教程(和正在使用的技术),以从一个视图控制器到下一个传递数据时SEGUE是一推(在prepareForSegue方法)。我可以投的destinationViewController
到我的自定义类和将数据推入自定义属性。
然而,当我试图为一个嵌入Segue公司(在ios6的新的一个,它允许集装箱查看工作)做到这一点,destinationViewController似乎并不是正确的;它只是一个UIViewController,而不是我在故事板中定义的自定义类。
正如你所看到的,我有开始和结束日期我的主表视图。然后,我有一个子视图,使用容器视图嵌入。这对命令日期+一个的UIDatePicker的工具栏。
我的问题是,我需要的主表视图控制器具有从日期选取器事件侦听器(在UIControlEventValueChanged
之一,以更新标签)。父控制器无法看到的日期选择器。这两种视图控制器具有自定义类实现的。日期选取器控制器类具有日期选择器作为一个IBOutlet对象和3时间范围按钮已选择了哪个做改变日期的方法。
看来我的问题在这里是两个视图控制器之间的上下文。
FYI:我需要他们分开,以便我可以切换日期选取器控件和工具栏的可见性。
UPDATE 1:
我已经找到了解决办法,这是在母公司层面的准备SEGUE,通过一个“自我”引用到具有父视图控制器类型的属性的孩子。这给孩子一个正确的引用到其父,我就可以做以下几点:
-(void) viewDidLoad {
[[self datePicker] addTarget:[self graphSettingsViewController] action:@selector(datePickerValueChanged:) forControlEvents:UIControlEventValueChanged];
}
这工作,但感觉“凌乱”。有任何想法吗?
我有同样的问题,从视图控制器容器中嵌入SEGUE到包含的VC。
我开始怀疑苹果有一个错误,或者在这种情况下,有可能是在赛格瑞(譬如embeddedVC代替destinationVC)其他属性。但...
我终于发现,不知怎的,具体源视图控制器(在故事板)改为股票的UIViewController,并以某种方式把事情搞乱。不知道这是怎么发生,但一旦我固定的,事情又开始工作。
希望这可以帮助...
使用嵌入Segue公司将数据传入容器视图
#pragma mark - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
NSString * segueName = segue.identifier;
if ([segueName isEqualToString: @"toMenuCategory"]) {
MenuCategoryVC * childViewController = (MenuCategoryVC *) [segue destinationViewController];
childViewController.activityList = self.menuCategoryList;
childViewController.setCategoryInfo= ^ (NSDictionary *dictCategoryInfo){
NSLog(@"dictCategoryInfo = %@" , dictCategoryInfo);
};
}
}
MenuCategoryVC.h
#import <UIKit/UIKit.h>
@interface MenuCategoryVC : UIViewController
@property (nonatomic,strong) NSMutableArray* activityList;
@property (nonatomic, copy) void (^setCategoryInfo)(NSDictionary *dictCategoryInfo);
MenuCategoryVC.m
// MARK: -
// MARK: - BUTTON NEXT ACTION
- (IBAction)actionNext:(id)sender {
self.setCategoryInfo(categoriesData);
}
使用委托模式。在prepareForSegue用于嵌入标识集合controller.delegate =自我。然后在IBAction为方法调用中的子控制器[self.delegate catgegoryChanged]
以上是关于使用嵌入Segue公司将数据传入容器视图的主要内容,如果未能解决你的问题,请参考以下文章