0

複数のアラームを備えたアラームアプリがあります。

アラームのリストを保持する UITableView である AlarmListViewController があります。行が選択されると、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

実装:

AlarmViewController.m

- (void)viewDidLoad
{
    [super viewDidLoad];

    NSLog(@"---VIEW DID LOAD---, current date: %@", [[NSDate date] fullDate]);
    NSLog(@"alarmID: %@", self.alarmID);
    NSLog(@"repeat: %@", self.repeatSelection);
    NSLog(@"time: %@", [self.timeSelected.date fullDate]);

}

セグエの準備:

-(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"];
        }
    }
}
4

1 に答える 1

1

ビューが読み込まれる前に UI 要素の値を設定することはできません。これは、prepareForSegue から日付ピッカーの日付を設定するときにしようとしていることです。代わりに、日付を aVC に渡し、その viewDidAppear メソッドで、渡された日付で日付ピッカーの日付を設定する必要があります (その日付を保持するには、aVC にプロパティが必要です)。

于 2013-02-04T04:47:27.173 に答える