передача indexPath в subview

#iphone #ios #nsindexpath

#iPhone #iOS #nsindexpath

Вопрос:

Привет, я пытаюсь передать значение индекса из моего родительского представления в мой subview следующим образом //main.m

 SubViewController *subViewController = [[SubViewController alloc] init];
subViewController.parentViewSelectedIndexPath = indexPath;
  

Однако, когда я пытаюсь проверить, было ли передано значение в subview следующим образом

//sub.m

 - (void)viewDidLoad
{
//
NSLog(@"%@", parentViewSelectedIndexPath);
//
  

отклонение в сторону
sub.h

 //
@interface VehicleResultViewController : UITableViewController {
//
NSIndexPath *parentViewSelectedIndexPath;
//
@property (nonatomic, retain) NSIndexPath *parentViewSelectedIndexPath;
//
@end
  

//Ответить

subview загружается до того, как он получает indexpath, передаваемый в is .. поэтому мне пришлось использовать метод, который выполняется позже, т.е. (didselectrowatindexpath) это распечатало правильный indexpath, который был отправлен ему из основного представления.

он выводит (null) на консоль .. я делаю что-то не так?

Комментарии:

1. Здесь недостаточно кода, чтобы рассказать. Например, если вы объявили ivar parentViewSelectedIndexPath , но затем синтезировали свое свойство как @synthesize parentViewSelectedIndexPath=_parentViewSelectedIndexPath , тогда было бы логично, что доступ к ivar в -viewDidLoad не дает вам значения свойства.

2. Проверка работоспособности: добавление NSLog(@"%@", indexPath); после установки parentViewSelectedIndexPath . Что происходит?

3. Кроме того, если ваш метод -init обращается self.view к (что, я надеюсь, не так), то -viewDidLoad сработает до того, как у вас будет возможность установить свойство.

4. Покажите нам код объявления для parentViewSelectedIndexPath .

5. Я пробовал это несколькими способами и все еще получаю (нулевой) вывод.

Ответ №1:

Добавьте несколько NSLog s для определения порядка вызовов, @Kevin указывает, что viewDidLoad это может быть вызвано до установки свойства.

Кроме того, если indexPath всегда устанавливается всякий subViewController раз, когда создается экземпляр, рекомендуется создать свой собственный назначенный инициализатор в indexPath качестве параметра. В случае, если @Kevin делает это, это ответ.