2012-01-26 3 views
0

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

ответ

0

Как сказал Тим, вы объявляете свойство для объекта словаря, то в файле исходного кода 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; 
    } 
} 

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

+0

Убедитесь, что свойство «сохранить» или «скопировать», чтобы избежать потери данных в другом месте –

-1

Вы бы использовали свойства. Свойства - это внешние значения класса. Они могут быть установлены или прочитаны. Когда вы определяете свойство, Xcode синтезирует сеттеры и геттеры, то есть автоматически создает методы класса и 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... 
+0

Поскольку я использую раскадровки, нет кода, который выделяет дочерний вид? Ну код, который я редактирую. – user1170665

+0

См. Ответ ElJay. – Tim

+0

Уважаемый Тим, w.r.t. ваш ответный сегмент - * и неатомный - это какой-то балони никто не знает, как он работает, но он связан с синхронизацией блокировки потоков. - * Это имеет все, что связано с синхронизацией потоков. См. Ссылку: http: //webcache.googleusercontent.com/search? Q = cache: QhnQmTk3rQIJ: http: //stackoverflow.com/questions/588866/atomic-vs-nonatomic-properties%2Bdeveloper.apple+: + iphone + неатомический & ае = UTF-8 & RLS = org.mozilla% 3Aen-США% 3Aofficial & клиент = светлячок-а & gs_l = реликвия-serp.3 ... 5527.10398.0.10658.30.26.0.1.0.4.315.3136.11j7j4j3.25.0 ... 0.0 ... 1ac.1.iYOL3a6g7To & hl = en & ct = clnk –

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

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