2012-01-28 3 views
0

У меня есть два вида: view1 calls: [self.view addSubview:view2.view];, а затем вызовы views2: [self.view removeFromSuperview];, и я хочу перезагрузить данные в view1, когда view1 снова появляется, но я не могу вызвать метод или обновить свойство view1, потому что я не может сделать #import "view1.h" в представлении2 (я сделал #import "view2.h" в view1).Дата обновления от superview

Это мой код:

View1.h:

-(void)reloadData; 

View1.m:

#import « View2.h » ; 
View2 *view2 = [[View2 alloc]init]; 
[self.view addSubview:view2.view]; 

View2.h:

#import « View1.h » 

View2.m:

// I want to call reloadData to reload Data of view1 before removing view2 
[self.view removeFromSuperview]; 

ответ

0

Если вы правильно реорганизовываете свои файлы, вы можете импортировать view1 в view2 и наоборот. Вам нужно только поставить #import "view1.h" в view2.h, если вам нужен какой-либо контент прямо в файле .h. Если вам это нужно только в вашей реализации, вы можете с радостью переместить #import "view1.h" в файл view2.m и тем самым разрешить круговую зависимость.

Обратите внимание, что во многих случаях вы можете пропустить импорт в файле .h, если это только для создания экземпляров/пареметров типа. Например

#import "Another.h" 

@interface Onething 
@property (strong, nonatomic) Another *an; 
@end 

может быть изменен на

@class Another; 

@interface Onething 
@property (strong, nonatomic) Another *an; 
@end 

В основном это говорит компилятору, что есть то, что называется Another но что детали не важны прямо сейчас. Затем вы можете добавить #import "Another.h" в прилагаемый файл .m и работать по-прежнему.

+0

Я не могу назвать [self.superview reloadData]; в моем представлении2, но импорт хорош в .m view2. self.superview не работает почему? Он не может видеть superiew, только self.subclass ... –

+0

Вы можете добавить свойство 'view2', которое ссылается на' view1': '@property (неатомный, слабый) View1 * callView;' (заменить слабый по назначению если вы не используете ARC). Вы можете установить это в view1 для себя и, таким образом, иметь 'self.callingView', доступный в view2. –

+0

Пожалуйста, скажите мне, что мне делать, спасибо. –

Смежные вопросы