2013-06-19 5 views
0

Я разрабатываю простое приложение, которое загружает изображения с Dribbble, но у меня проблема с перезагрузкой данных для моего вида коллекции. У меня два представления, настроенные с ViewDeck, центр - это мой основной вид, который содержит представление коллекции, а другой вид содержит представление таблицы с настройками, и оттуда я пытаюсь вызвать метод в первом представлении и перезагрузить данные, когда элемент прослушивается, но он просто не работает.Не удается перезагрузить коллекцию - null

Я попытался вызвать тот же метод из главного окна, используя кнопку -> работал как шарм, но со второго окна он просто не обновляет данные.

Я попытался каким-то образом отлаживать и кажется, что моя коллекция имеет значение null при вызове перезагрузки, не знаю почему.

SettingsViewController

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 

    NSLog(@"tap"); 

    JKViewController *appDelegate = [[JKViewController alloc] init]; 
    appDelegate.dataHasChanged = YES; 
    [appDelegate refresh]; 

    [self.viewDeckController closeLeftViewAnimated:YES]; 
} 

MainView

- (void)refresh{ 

    NSLog(@"refresh"); 

    if(dataHasChanged) 
    { 
     switch (listType) { 
      case 0: 
       [self refreshWithList:SPListPopular]; 
       break; 

      case 1: 
       [self refreshWithList:SPListEveryone]; 
       break; 

      case 2: 
       [self refreshWithList:SPListDebuts]; 
       break; 

      case 3: 
       [self refreshWithList:SPListPopular]; 
       break; 

      default: 
       [self refreshWithList:nil]; 
       break; 
     } 

     dataHasChanged = NO; 
     NSLog(@"Should refresh"); 
    } 

    NSLog(@"%d", [self->shots count]); 
    NSLog(@"Collection view: %@",self.collectionView.description); 
    NSLog(@"self.list: %@",self.list); 
    NSLog(@"List type: %d", listType); 
} 

Это не работает: /, но когда я называю его от кнопки в MainView он работает.

- (IBAction)changeList:(id)sender { 
    [self refreshWithList:SPListDebuts]; 
} 

Кто-нибудь знает, в чем проблема?

Edit - решаемые

Получение права экземпляр centerViewController

JKViewController *mainController = ((UINavigationController*)self.viewDeckController.centerController).visibleViewController.navigationController.viewControllers[0]; 
+0

Вы можете использовать SDK Dribbble iOS для загрузки снимков в однолинейный метод вызова API, это может сэкономить вам много времени. См. Github repo: https://github.com/agilie/dribbble-ios-sdk – Mitya

ответ

0

Причина, по которой вы не видите ваши данные обновляются, потому что вы создаете новый контроллер представления и говорить, что обновить. Этот новый контроллер представления инициализирован, но не добавлен в вашу иерархию представлений. То, что вы хотите сделать, это сообщение существующего контроллера представления, как это:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 

    NSLog(@"tap"); 

    JKViewController *mainViewController = self.viewDeckController.centerViewController; 
    mainViewController.dataHasChanged = YES; 
    [mainViewController refresh]; 

    [self.viewDeckController closeLeftViewAnimated:YES]; 
} 

Кроме того, обратите внимание, что я изменил имя переменного в моей версии. Именование экземпляра UIViewController «appDelegate» очень сбивает с толку.

+0

Как вы думаете, вы можете мне помочь больше :)? – johnkodes

+0

Всегда hth. Был ли мой ответ непонятен? – geraldWilliam

+0

Нет, это было ясно :), но прочитал мой другой ответ. Я не знал, как помещать его в комментарий. ViewDeck return Контроллер навигации, но navigationController.ViewControllers показывает 0 VCs ... Я думаю, что я сделал свой проект слишком сложным, или я не должен был использовать ViewDeck с Storyboards ... – johnkodes

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