2011-12-22 2 views
0

Это то, что я получил до сих пор. mainview.mПередача данных с одного взгляда в другое (раскадровка, iOS)

-(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] 
} 

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

ответ

1

Вы пытались превратить ext в собственность вместо этого? Я понимаю, что «точка» нотации по существу превращает ваш код в

[secView setExt:@".com"] 

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

@interface secondView : UIViewController 

@property (nonatomic, copy) NSString *ext; 

@end 

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

+0

У меня на самом деле были эти строки. Я просто забыл набирать их здесь, позвольте мне отредактировать! – Cloaky

1

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

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

Поместите контрольную точку на линии:

secView.ext = @".com"; 

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

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

+0

Я только что нашел проблему ..У меня был segue из mainView, указывающий на контроллер панели вкладок, а не на Tab1 (который является вторым представлением). Это привело к тому, что destinationViewController возвратил что-то еще! – Cloaky

+0

Я предполагаю, что это решение предназначено для destinationController для типа, который вы ожидаете. Это позволило бы вам знать, что вы не выбрали правильный тип. – Oli

1

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

  • Добавить view2.h файл в view1.h
  • инициализации объекта View2 и установить их переменную.
Смежные вопросы