使用嵌入Segue公司将数据传入容器视图

问题描述 投票:0回答:3

因此,我已经看到大部分的教程(和正在使用的技术),以从一个视图控制器到下一个传递数据时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];
}

这工作,但感觉“凌乱”。有任何想法吗?

ios6 storyboard uitableview uidatepicker uistoryboardsegue
3个回答
0
投票

我有同样的问题,从视图控制器容器中嵌入SEGUE到包含的VC。

我开始怀疑苹果有一个错误,或者在这种情况下,有可能是在赛格瑞(譬如embeddedVC代替destinationVC)其他属性。但...

我终于发现,不知怎的,具体源视图控制器(在故事板)改为股票的UIViewController,并以某种方式把事情搞乱。不知道这是怎么发生,但一旦我固定的,事情又开始工作。

希望这可以帮助...


0
投票

使用嵌入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);

}

0
投票

使用委托模式。在prepareForSegue用于嵌入标识集合controller.delegate =自我。然后在IBAction为方法调用中的子控制器[self.delegate catgegoryChanged]

© www.soinside.com 2019 - 2024. All rights reserved.