Ios 烦人的简单问题,将数据发送到其他视图控制器

Ios 烦人的简单问题,将数据发送到其他视图控制器,ios,objective-c,Ios,Objective C,我使用的是Kal日历,我需要让用户能够插入一行,这完全是另一回事 Kal Calendar通过将其类分配给视图控制器来应用,并生成视图 所以,我决定制作一个插入栏,用户可以在其中单击,然后被发送到另一个视图控制器,在那里他可以插入一个值 但为此,我需要添加一个条,所以我在主视图控制器的容器中添加了Kal,这样我就可以通过故事板添加条 因此,现在我需要在用户单击+按钮时,将所选日期转到“插入”视图控制器 问题是我似乎无法传递该值,我尝试了一些不同的方法,结果得到了null 在Kal ViewCo

我使用的是Kal日历,我需要让用户能够插入一行,这完全是另一回事

Kal Calendar通过将其类分配给视图控制器来应用,并生成视图

所以,我决定制作一个插入栏,用户可以在其中单击,然后被发送到另一个视图控制器,在那里他可以插入一个值

但为此,我需要添加一个条,所以我在主视图控制器的容器中添加了Kal,这样我就可以通过故事板添加条

因此,现在我需要在用户单击+按钮时,将所选日期转到“插入”视图控制器

问题是我似乎无法传递该值,我尝试了一些不同的方法,结果得到了null

在Kal ViewController内部,所选日期在此处打印,并在ViewDidLoad上触发,因此保证可以设置

- (void) calendarMonthView:(TKCalendarMonthView*)monthView didSelectDate:(NSDate*)date{
NSLog(@"Date Selected: %@",date);

    self.dateSelected = date; // i set it for the property here

    [self.tableView reloadData];
}
所以,我试图通过在Kal calendar中创建一个插入视图的实例并在那里设置日期来实现这一点,但后来我发现,如果我通过storyboard进行切换,将使用另一个实例


有什么建议吗?也许用一种完全不同的方式设置它

使用容器视图获得的控制器是子视图控制器,因此您可以使用self.childViewControllers[0]从父视图(视图中包含容器视图的控制器)引用它。在您的情况下,看起来ViewControllerCalendar是父级,CalendarMonthViewController是子级,其中有dateSelected属性。如果ViewControllerInsert的模式segue来自+按钮,那么您应该能够在prepareForSegue:sender:中向该控制器传递日期,如下所示(此代码将位于您的容器控制器ViewControllerCalendar中):


在这里的示例中,我为segue命名为“Insert”,并为您在ViewControllerInsert中需要的NSDate属性命名为PassedDate。

否,感谢下一个必须知道日期值的控制器,该值是在最左侧ContainerOrry的子级中为延迟响应而选择的,下面是标记:ViewControllerCalendarContainer、ViewControllerCalendar、ViewControllerInsert,这些名称应该解释设置重定向在容器中,数据在日历中,必须传递才能插入它。这是一个愚蠢的设置,但这是我用有限的Cocoa/IOS/Obj C所能做的最好的设置skills@JohnDOe,我还是很困惑。嵌入式控制器(容器视图中的那个)是CalendarMonthViewController吗?是的,就是那个:)
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if([segue.identifier isEqualToString:@"Insert"]) {
        ViewControllerInsert *dest = segue.destinationViewController;
        dest.passedInDate = [(CalendarMonthViewController *)self.childViewControllers[0] dateSelected];
    }
}