Можем ли мы передать параметр для просмотра загружен или будет отображаться представление другого класса из класса - PullRequest
0 голосов
/ 22 июня 2011

Извините, если это не стандартный вопрос, но теперь ваши решения могут помочь мне. В моем приложении у меня есть два класса: ClassA и ClassB. ClassB имеет табличное представление. Я использую запрос для заполнения табличного представления в ClassB, но имя столбца, через который я должен запросить, - это то, что я получаю из ClassA, который я хочу передать ClassB и выполнить запрос и заполнить вид таблицы. Могу ли я передать параметр в viewDidLoad или viewWillAppear? Они вызываются при загрузке представления. Или есть другой способ сделать это?

Ответы [ 4 ]

2 голосов
/ 22 июня 2011

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

2 голосов
/ 22 июня 2011

Почему бы вам не объявить свойство для этого?

@interface ClassB:...

@property (nonatomic, copy) NSString * columnName

@end

и синтезировать его в реализации.

Когда вы создаете ClassB экземпляр из ClassA, сделайте это,

ClassB * classB = [[ClassB alloc] initWithNibName:.. bundle:..];
classB.columnName = theColumnName;
[self pushViewController:classB animated:YES];
[classB release];

Используйте этот параметр в viewDidLoad.

2 голосов
/ 22 июня 2011

Я бы порекомендовал вам написать метод установки для вашего запроса. После создания класса B вы можете вызвать метод в любое время, чтобы обновить набор данных и представление таблицы.

Вам необходимо настроить параметры для обработки любой формы представления, которую вы будете использовать для запроса.

ClassB.h

@interface ClassB : UITableViewController {

}

@property (nonatomic, copy) NSString *query;

ClassB.m

// method declared in ClassB

@implementation 

@synthesize query;

// other methods here ...

- (void)setQuery:(NSString *)newQuery
{   
    // query is an instance variable declared in your .h
    [newQuery retain];
    [query release];
    query = newQuery;

    // perform your new data fetch with the supplied query

    [self.tableView reload];
}

@end

ClassA.m

- (void)viewDidLoad
{
    [super viewDidLoad];
    classB = [[ClassB alloc] initWithNibName:@"ClassB" bundle:nil];
    [classB setQuery:@"your query string here"];
}
1 голос
/ 22 июня 2011

Вы передаете значение своему классу или конструктору объектов.Затем вы сохраняете значение в свойстве этого класса.Затем вы получаете доступ к этому свойству из представления, загруженного или других ваших событий.

Это более общая концепция программирования, чем все, что связано с задачей c, iPad и т. Д.в вашем заголовочном файле вы определяете свойство.Затем вы синтезируете это свойство c файлом.Затем вы устанавливаете свойство в конструкторе.Затем вы получаете доступ к свойству, по вашему мнению, загрузили событие.

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