0

を変更して受け取ったパラメータを使用して、テーブルビューをリロードしようとしていますUIDatepicker。現在、データをキャプチャしてに送信する次のメソッドがありますUIButton(これは機能します)。呼び出された UITableViewController を格納するコンテナー ビューをリセットしようとしていますがDisplayTableViewControllerNSFetchController. この問題をデバッグまたは修正する方法について何か提案はありますか?

-(void)changeDate:(UIDatePicker *)sender {

    //NSDate Formatter
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"ddMMyyyy"];

    //Convert to string
    NSString *stringFromDate = [dateFormatter stringFromDate:sender.date];

    //Send to UIButton
    [dateLabel setTitle:stringFromDate forState:UIControlStateNormal];

    DisplayTableViewController *tbc = (DisplayTableViewController *)self.childViewControllers[0];
    [tbc.tableView reloadData];

}

ここに画像の説明を入力


編集

 if ([[segue identifier] isEqualToString:@"ShowDisplayResults"])
    {
        //Format Date for Seague
        NSDateFormatter *todaysdate = [[NSDateFormatter alloc] init];
        [todaysdate setDateFormat:@"ddMMyyyy"];
        //Convert to string for Seague
        NSString *stringFromDate = [todaysdate stringFromDate:[NSDate date]];
        // Store the text we entered to dateSeague
        dateSeague =stringFromDate;
        // Get reference to the destination view controller
        DisplayTableViewController *targetVC = [segue destinationViewController];
        // Pass any objects to the view controller here, like...
        targetVC.dateSeague = dateSeague;
        targetVC.Ex = self.Ex;

    }

コンテナー内の NSFETCHCONTROLLER

- (NSFetchedResultsController *)fetchedResultsController {
    NSLog(@"Test Date for second seague = %@", dateSeague);
    if (_fetchedResultsController != nil) {
        return _fetchedResultsController;
    }
    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
    //Query Entity
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"WorkoutDetails"inManagedObjectContext:managedObjectContext];
    //Fetch Entity
    [fetchRequest setEntity:entity];

    //Sort Returned Values
    NSSortDescriptor *sort = [[NSSortDescriptor alloc] initWithKey:@"weight" ascending:NO];
    //Fetch Sorted Array
    [fetchRequest setSortDescriptors:[NSArray arrayWithObject:sort]];
    //Set Return Size
    [fetchRequest setFetchBatchSize:20];

    //Predicate Results Based on ID
    NSPredicate *sortName = [NSPredicate predicateWithFormat:@"exid == %@", Ex.name];
    //Get NSDate format from String
    NSString *stringFromDate = dateSeague;
    NSDateFormatter *df = [[NSDateFormatter alloc] init];
    //Convert Back to NSDate
    [df setDateFormat:@"ddMMyyyy"];
    NSDate *inputedDate = [df dateFromString: stringFromDate];
    //Set Predicate
    NSPredicate *sortDate = [NSPredicate predicateWithFormat:@"date == %@", inputedDate];
    //Compound Predicate Array
    NSPredicate *placesPredicate = [NSCompoundPredicate andPredicateWithSubpredicates:[NSArray arrayWithObjects:sortName, sortDate, nil]];
    //Fetch Predicate Compound Array
    [fetchRequest setPredicate:placesPredicate];
    //Continue Fetching!
    NSFetchedResultsController *theFetchedResultsController =
    [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
                                        managedObjectContext:managedObjectContext sectionNameKeyPath:nil
                                                   cacheName: nil];
    self.fetchedResultsController = theFetchedResultsController;
    _fetchedResultsController.delegate = self;

    return _fetchedResultsController;

}
4

2 に答える 2

0

まずself.childViewControllers[0]、View Controller 階層の最初の View Controller を取得します。これは、別の View Controller を含む 1 つの View Controller がある場合にのみ必要です。

第 2 に、これを呼び出すときのビュー コントローラーの状態がよくわからないため、このアプローチを使用することはお勧めできません。また、そのインデックスのビュー コントローラーが期待どおりのクラスにならない可能性があります。

そのため、日付ピッカーを保持するビュー コントローラーまたはビューのデリゲートを実装し、日付が変更され、日付でやりたいことをすべて実行したら、デリゲートを呼び出すことをお勧めします。日付で何もしたくない場合は、それをView Controllerに渡したいだけで、日付ピッカーdelegateをあなたのものに設定できますDisplayTableViewController

補足として、私はあなたが現在持っている階層を知りません。私の回答が役に立たない場合は、質問に詳細を追加してください(取得したい階層とフロー)

于 2013-07-12T21:24:09.567 に答える
0

NSFetchRequest変更のクエリ パラメータはありますNSFetchControllerか? その場合、キャッシュを使用している場合は必ず deleteCacheWithName を使用してから、NSFetchController を再構成してください。

于 2013-07-12T21:25:10.933 に答える