0

让我开始告诉你,我是Objective C的新手。我刚刚完成了Big Nerd Ranch的书,我想创建一个真正简单而基本的应用程序以了解更多信息。 我的想法是创建一个应用程序,将计算两个日期之间的星期。我为此创建了一个类并进行了测试。这样可行。UIDatePicker在UIViewControllers之间传递数据

正如您在下面看到的,我已创建视图(以编程方式),一个包含日期和另一个将在您单击开始日期或结束日期时变为可见。

如果您选择日期并点击按钮'计算周数',您将返回到第一个视图。 没有我的大问题是,我如何将这个选定的值返回到我的主屏幕?我已经尝试了几种可能性并在网上搜索信息,但我无法得到的是工作。 我知道这应该是很容易的,但对于我来说这不是。 :-)

我创建了一个包含值“开始日期”和“结束日期”的NSMutableArray。我的想法是将来自SelectDateView的UILabel的值添加到此数组中。 我为此创建了一个属性在输入视图@property (readwrite, retain) NSMutableArray *datesArray;中。

在selectDateViewController我创建了另一个属性@property (nonatomic, assign) BITInputViewController *ivc;所以我(在我看来)可以为datesArray添加一个值。

当我选择一个日期这个方法被调用时,它适用于SelectDateView上的UILabel,但不会对datesArray做任何事情。

- (void)LabelChange:(id)sender{ 

NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
df.dateStyle = NSDateFormatterMediumStyle; 

dateLabel.text = [NSString stringWithFormat:@"%@", 
        [df stringFromDate:datePicker.date]]; 

[ivc.datesArray addObject:dateLabel.text]; 

if (ivc.datesArray) { 

    for (NSString *d in ivc.datesArray) { 
     NSLog(@"This is in datesArray %@",d); 
    } 
}else NSLog(@"!ivc.datesArray"); 

}

当我测试应用程序并选择日期,我总是看到“!ivc.datesArray”在日志文件中。

我也做ivc.datesArray的此检查在-(void)viewWillAppear:(BOOL)animated ,在这里我看到当前的日期,因为我在- (void)viewDidLoad 这个dateLabel.text = [NSString stringWithFormat:@"%@",[df stringFromDate:[NSDate date]]];

设置此日期(当我在inputview打印出来的阵列,它显示开始日期和结束日期,但不是所选日期。)

希望有人可以给我一些指示。

+0

您想在选择之后立即将View2中的数据传递给View1吗? – Ganapathy 2013-03-01 12:04:11

+0

U可以使用自定义委托将数据从view2传递到view1 ..你试过了吗? – Ganapathy 2013-03-01 12:08:13

+0

嗨,我有一个导航栏中的按钮,回到第一个视图。我还没有绑定一个自定义委托,因为我不知道如何做到这一点。我将阅读有关该..谢谢! – Eloy 2013-03-01 12:37:02

回答

0

在view1.m文件中声明的@interface上方NSString* date和创造谓一流的它应该像

-(void)passDate:(NSString *)dateString 
{ 

    date = [NSString stringWithFormat:@"%@",dateString]; 

} 

and in your second class create object of first class like 
View1 * vc = [[View1 alloc]init]; 
[vc passDate:df]; 

希望工程的方法。您必须在@interface之前声明NSString,并且不得归还和合成。