2013-07-12 7 views
0

Я пытаюсь перезагрузить мой tableview с параметрами, полученными от изменения UIDatepicker. В настоящее время у меня есть следующий метод, который фиксирует данные и отправляет их в UIButton (который работает). Я пытаюсь сбросить представление контейнера, в котором находится UITableViewController, который называется DisplayTableViewController, но он не перезагружает NSFetchController. Любые предложения по отладке или исправлению этой проблемы?Перезагрузка контейнера UITableView по методу

-(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]; 

} 

enter image description here


РЕДАКТИРОВАТЬ

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; 

} 
+0

Как ваша таблица загружается при первом запуске приложения? – rdelmar

+0

У вас возникла эта проблема? Я заметил, что «давайте продолжим в чате» где-то в ответе. Что произошло после? – Steven

ответ

0

Прежде всего self.childViewControllers[0] предоставит вам первый контроллер представления в иерархии диспетчера представлений, и вы хотите это, только если у вас есть один контроллер вида, содержащий другой контроллер вида.

Во-вторых, это не очень хорошая практика для использования этого подхода, поскольку вы действительно не знаете состояние контроллера вида, когда вы вызываете это, и, возможно, контроллер просмотра в этом индексе не будет тем же классом, что и вы ожидается.

Поэтому я предлагаю вам реализовать делегат для вашего контроллера или представления, который содержит сборщик дат и когда дата изменится, и вы делаете все то, что вы хотите сделать с датой, вызовите делегата. Если вы не хотите ничего делать с датой, вы просто хотите передать ее в контроллер просмотра, тогда вы можете установить выбор даты delegate, чтобы быть вашим DisplayTableViewController

Как примечание стороны, я не знаю иерархию, которую вы имеете прямо сейчас, и если вы не найдете мой ответ полезным, добавьте более подробную информацию к вашему вопросу (иерархия и поток, который вы хотите получить)

+0

Привет @danypata Я передаю значение uibutton в NSFetchController во втором UITableViewController через простую строку. Когда я ввожу данные, UITable перезагружает и обновляет, но когда я меняю дату, которую он не обновляет. – memyselfandmyiphone

+0

Я добавил изображение, показанное выше. NSPredicate во втором представлении содержит строковое значение UIbutton – memyselfandmyiphone

+0

Сделайте проверку на ваше значение, которое передается в fetchController, посмотрите, нормально ли это, проверьте также, что данные, возвращаемые fetchController, не ноль (или пустой). Если все вышеизложенное одобрено, проверьте, где вы вызываете 'reloadData' для представления таблицы. – danypata

0

Имеются ли параметры запроса для NSFetchRequest of NSFetchController Изменение ? Если это так, убедитесь, что вы используете deleteCacheWithName, если он использует кеш, а затем перенастройте NSFetchController.

+0

Я использую 'NSpredicates' в' NSFetchRequest', однако я не использую catch и устанавливаю его как 'cacheName: nil'. Когда я обновляю таблицу, внося данные, которые она обновляет в реальном времени, но когда я меняю дату значения (которая передается через строку в NSpredicate), она не перезагружает запрос – memyselfandmyiphone

+0

Код, указанный выше, вызывает перезагрузку. Где FRC переконфигурирована? Это не автоматическое. – KHansenSF

+0

Я просто немного отлаживал там, и когда я впервые загружал NSFetchRequest, он получил значение даты, однако, когда я меняю дату с помощью выбора даты, она возвращается как ниль – memyselfandmyiphone

Смежные вопросы