Передача данных из одного представления в другое (раскадровка, iOS) - PullRequest
0 голосов
/ 22 декабря 2011

Это то, что я получил до сих пор.mainview.m

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender(id)sender {
secondView *secView = [segue destinationViewController]
secView.ext = @".com";
}

secondView.h

@interface secondView : UIViewController {
NSString *ext;
 }
@proper (nonatomic, retain) NSString *ext;
@end

secondView.m

-(void)viewDidLoad {
NSString *url = [@"www.google" stringByAppendingFormat:ext]
}

И он возвращает ошибку о том, что ext является нулем ... что такоеЯ делаю не так?

Ответы [ 4 ]

1 голос
/ 18 апреля 2012

Существует два вида: view1 и view2.

  • Добавить файл view2.h в view1.h
  • инициализировать объект view2 и установить их переменную.
1 голос
/ 23 декабря 2011

Проверьте следующее:

  1. Убедитесь, что @synthesize ext; находится в SecondView.m
  2. В раскадровке правильно ли вы связали переход?
  3. В Stodyboard, viewController, представляющий SecondView, определен как класс SecondView?
  4. Убедитесь, что вы вызываете SecondView с помощью метода prepareForSegue:sender (т.е. SecondView не вызывается pushViewController:animated где-то еще в вашем коде).
1 голос
/ 23 декабря 2011

Установите точку останова на линии:

secView.ext = @".com";

и убедитесь, что ивар ext правильно установлен после назначения.Если это не так, вы можете указать, что аксессоры используют другой ivar в вашей директиве @synthesize для ext, или вы могли предоставить установщик -setExt:, который неправильно устанавливает ivar.

Если ext правильно задано после назначения, возможно, у вас есть два разных экземпляра secondView.Это часто случалось, когда люди использовали файлы .xib - они создавали один контроллер представления в коде и имели другой экземпляр того же класса в своем файле .xib.Я бы не ожидал, что это произойдет здесь, поскольку вы получаете secView прямо из перехода, но об этом стоит подумать.

1 голос
/ 22 декабря 2011

Вы пытались превратить ext в свойство? Насколько я понимаю, «точечная» запись по существу превращает ваш код в

[secView setExt:@".com"]

Так что превратите SecondView.h в

@interface secondView : UIViewController

@property (nonatomic, copy) NSString *ext;

@end

И не забудьте @синтезировать его в свой файл .m

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...