Передача NSDictionary из родительского представления в дочернее представление (новейший xcode) - PullRequest
0 голосов
/ 26 января 2012

Я выполняю задачу c только 2 дня, поэтому, если это ужасный вопрос, я прошу прощения.По сути, я использую раскадровку для создания приложения для iPhone.Ячейки одного из моих представлений создаются динамически на основе извлечения того, что отображать в формате json, через запрос http.Когда выбрана одна из этих ячеек, должно появиться представление, то же самое представление для каждой ячейки (не вопрос о Segue).Это представление будет зависеть от того, какая из ячеек выбрана (и не только это, но и другая информация из json, которая не отображается пользователю).Следовательно, мне нужно передать NSDictionary дочернему представлению.Я уверен, что это тривиально, но я не нашел решения.Заранее спасибо за любую помощь.

Ответы [ 2 ]

0 голосов
/ 26 января 2012

Как и сказал Тим, вы объявляете свойство для своего словарного объекта, затем в файле кода родительского VC (файл .m) вы:

#import "ChildViewController.h" // Replace that with the name of the class for your child VC

и делаете это в методе prepareForSeque:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    // Make sure we are dealing with the proper Segue
    if ([segue.identifier isEqualToString:@"mySegueID"]) // ALWAYS use identifiers for your Segues
    {
        // Setup the destination ViewController
        ChildViewController *cvc = segue.destinationViewController;


        // Set the dictionary object property on the ChildViewController
        cvc.myDict = TheDictionaryObjectYouWantToPass;
    }
}

Так вы передаете объекты, используя раскадровки.Этот метод prepareForSegue вызывается при вызове Segue.Здесь вы передаете объекты и делаете все, что связано с настройкой конечного контроллера представления

0 голосов
/ 26 января 2012

Вы бы использовали свойства .Свойства - это внешние значения класса.Их можно установить или прочитать.Когда вы определяете свойство, XCode синтезирует сеттеры и геттеры, то есть автоматически создает методы -(type)variable и setVariable:(type) для класса, используя следующие стратегии: retain означает, что класс сохранит его - в отличие от assign, где класс не висит на нем, а nonatomic означает, что он обновит его на месте вместо копирования нового значения в другую часть памяти и обновления ссылки только после того, как это будет сделано.nonatomic обычно используется в приложениях, где безопасность потоков менее важна, так как она быстрее, чем atomic, но она не поточнобезопасна.

В заголовке вашего дочернего представления:

@property (nonatomic, retain) NSDictionary* myDict;

В методе родительского представления, которое представляет дочернее представление

// ... code which allocs child view here...
[childView setMyDict:theDict];
// ... code which presents child view here...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...