从UIDatePicker在UIViewControllers之间传递数据

时间:2013-03-01 11:45:47

标签: ios objective-c uiviewcontroller nsmutablearray uidatepicker

让我开始告诉你,我是Objective C的新手。我刚刚完成了Big Nerd Ranch的书,我想创建一个真正的简单和基本的应用程序来了解更多。 我的想法是创建一个应用程序,计算两个日期之间的周数。我为此创建了一个类并对其进行了测试。这样可行。

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

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

我创建了一个NSMutableArray,其中包含值“开始日期”和“结束日期”。我的想法是将SelectDateView中UILabel的值添加到此数组中。 我在inputview @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”。

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

设置了此日期

(当我在输入视图中打印出数组时,它会显示开始日期和结束日期,但不显示所选日期。)

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

1 个答案:

答案 0 :(得分:0)

在view1.m文件中的NSString* date上方声明一个@interface,并在第一个类中创建一个类似

的方法
-(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];

希望它有效。您必须在NSString之前声明@interface并且不要声明属性并进行综合。