Как правильно передать объект представлению?

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

Вот тут я немного застрял. Мне непонятно, как передать данные записи, выбранной пользователем, в мой подробный вид. Detail-View вызывается через presentModalView...

Я думал о:

  1. Вызов функции setDetails:(PostingData *)myPosting для viewController моего подробного представления.

  2. представление DetailView пользователю путем вызова presentModalViewAnimated.

Представление представлено, но функция setDetails: аварийно завершает работу без какого-либо вывода на консоль отладчика.

МОЙ ВОПРОС:

Как правильно передать данные (в пользовательских объектах как экземпляр самописного класса) из моего контроллера представления в контроллер представления, который должен отображать подробные данные.

Любая подсказка или помощь приветствуется. Я не могу платить вам за вашу помощь, но я на пути к тому, чтобы стать лучше, а затем помогать другим :-).


person MadMaxAPP    schedule 21.12.2010    source источник


Ответы (2)


  1. определить пользовательский объект в вашем классе. @property(nonatomic, retain) MyClass * myClass;
  2. загрузите канал в NSMutableDictionary и предоставьте его своему классу
[YOUR_VIEW_CONTROLLER *yourViewController = [[YOUR_VIEW_CONTROLLER alloc] init];
yourViewController.PROPERTY_DEFINED_BEFORE = yourObject;
[view addSubview:yourViewController.view];
[yourViewController release];

ваше здоровье

person endo.anaconda    schedule 21.12.2010

Способ 1: передать его в пользовательском методе инициализации

В вашем файле заголовка объявите свойство

@property (nonatomic, retain) id myDataObject;

И в вашей реализации используйте пользовательский инициализатор, подобный этому

 -(id)initCustom:(id)myObject;
    if(self = [super init]) {
        myDataObject = [myObject retain];
    }
    return self;
  }

Способ 2: использовать свойство

Используйте @property в своем заголовке и @synthesize в вашем файле реализации .m.

   [CustomUIViewController* newViewController = [[CustomUIViewControlleralloc] init];
   newViewConroller.myDataObject = myObject;
   [view addSubview:newViewController.view];
   [newViewController release];
person Henrik P. Hessel    schedule 21.12.2010
comment
Первый способ пропускает удерживаемый вызов. - person Marcio; 21.12.2010
comment
в порядке. Это работает как шарм с методом 1. Но есть одна вещь, которая создает проблемы. Подробный вид теперь открыт, и я могу отобразить данные. Если я попытаюсь получить доступ к объекту из IBAction, который вызывается нажатием кнопки, я получаю EXC_BAD_ACCESS. Должен ли я особым образом передавать объект моему методу initCustom? - person MadMaxAPP; 21.12.2010
comment
вы использовали @property (неатомарное, сохранение) .. это должно сохранить ваш объект один раз - person Henrik P. Hessel; 21.12.2010
comment
да. в заданиях @interface *theJob и во внешних заданиях @property (неатомарных, сохраняемых) *theJob; А также в .m - Файл @synthesize theJob; - person MadMaxAPP; 21.12.2010
comment
ах .. хорошо .. чтобы я понял, что это означает, что viewController помещает +1 к счетчику сохранения, чтобы предотвратить освобождение myObject viewController, который инициализировал detailView ? - person MadMaxAPP; 21.12.2010
comment
в порядке. Благодарю. мне не нужно освобождать myObject тогда где угодно? количество сохранений автоматически уменьшается, если viewController для подробного представления освобождается? - person MadMaxAPP; 21.12.2010
comment
вызовите [выпуск myObject] в вашем методе Dealloc - person Henrik P. Hessel; 21.12.2010