#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 делает это, это ответ.