Ios Can';t设置UIDatePicker';segue的日期

Ios Can';t设置UIDatePicker';segue的日期,ios,objective-c,uidatepicker,Ios,Objective C,Uidatepicker,我有一个带有多个闹钟的闹钟应用程序 有一个AlarmListViewController,它是保存报警列表的UITableView。选择该行后,将启动一个序列到AlarmViewController(详细视图)。除日期外,其他所有内容都从AlarmListViewController正确传递到AlarmViewController 我应该提到,fullDate是NSDate上的一个类别,它使NSDate的打印更容易 代码如下: 标题: AlarmViewController.h @interf

我有一个带有多个闹钟的闹钟应用程序

有一个AlarmListViewController,它是保存报警列表的UITableView。选择该行后,将启动一个序列到AlarmViewController(详细视图)。除日期外,其他所有内容都从AlarmListViewController正确传递到AlarmViewController

我应该提到,
fullDate
是NSDate上的一个类别,它使NSDate的打印更容易

代码如下:

标题:

AlarmViewController.h

@interface AlarmViewController : UITableViewController <UITableViewDataSource, UITableViewDelegate>

@property (weak, nonatomic) IBOutlet UIDatePicker *timeSelected;
@property (nonatomic, strong) NSMutableArray *repeatSelection;
@property (nonatomic, strong) NSString *alarmID;

@end
准备表格:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    NSLog(@"self.selectedCell: %d", self.selectedCell);
    if ([segue.identifier isEqualToString:@"alarmDetail"] || [segue.identifier isEqualToString:@"addAlarm"])
    {
        AlarmViewController *aVC = (AlarmViewController *)[segue destinationViewController];
        if (self.tableView.editing)
        {
            NSDictionary *setting = [self.alarmList objectAtIndex:self.selectedCell];
            NSLog(@"setting.time = %@", [[setting objectForKey:@"time"] fullDate]);

            aVC.repeatSelection = [setting objectForKey:@"repeat"];
            aVC.alarmID = [setting objectForKey:@"alarmID"];
            aVC.timeSelected.date = [setting objectForKey:@"time"];
        }
    }
}

在加载UI元素的视图之前,不能设置该元素的值,这是在prepareForSegue中设置日期选择器的日期时尝试执行的操作。相反,您需要将日期传递给aVC,然后在其ViewDidDisplay方法中,使用传递的日期设置日期选择器的日期(您需要aVC中的属性来保存该日期)。

谢谢!这是你随着时间的推移学到的东西,还是有一份文件可以指出你从哪里学到的?这很有道理。@arigold,我想这是我从犯同样的错误,并做一些研究来纠正它中学到的。
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    NSLog(@"self.selectedCell: %d", self.selectedCell);
    if ([segue.identifier isEqualToString:@"alarmDetail"] || [segue.identifier isEqualToString:@"addAlarm"])
    {
        AlarmViewController *aVC = (AlarmViewController *)[segue destinationViewController];
        if (self.tableView.editing)
        {
            NSDictionary *setting = [self.alarmList objectAtIndex:self.selectedCell];
            NSLog(@"setting.time = %@", [[setting objectForKey:@"time"] fullDate]);

            aVC.repeatSelection = [setting objectForKey:@"repeat"];
            aVC.alarmID = [setting objectForKey:@"alarmID"];
            aVC.timeSelected.date = [setting objectForKey:@"time"];
        }
    }
}