Как получить indexPath из одного класса в другой - PullRequest
0 голосов
/ 06 июля 2010

У меня есть приложение, в котором моим основным видом является просмотр таблицы. где каждая ячейка загружает другое представление, содержащее определенные данные. Теперь каждая ячейка отличается, поэтому данные в представлении, загруженном каждой ячейкой, должны быть разными. Для этого мне нужен indexPath. Я создал класс для TableView и другой класс для простого UIView. Как переслать значение indexPath из одного класса в другой.

Заранее спасибо Nik

1 Ответ

2 голосов
/ 06 июля 2010

Если я понимаю, что вы спрашиваете, у вас есть TableView (TableView1), в котором каждая ячейка загружает новое представление (MyView1) с содержимым, зависящим от indexPath ячейки. Когда вы получаете метод isSelected, вы не можете просто передать indexPath в конструктор создаваемого вами нового представления? Например

–(void) selectRowAtIndexPath:(NSIndexPath*) indexPath animated:(BOOL) animated (UITableViewScrollPosition)scrollPosition {
 UIView* view = [[[MyView1 alloc] initWithIndexPath:indexPath] autorelease];
 //push or load the view
}

Затем вам нужно будет создать свой собственный класс MyView1, который наследуется от UIView, и добавить конструктор, чтобы принять дополнительный параметр и сохранить его.

Если вы не создаете UIView или он уже существует, тогда я не совсем уверен, что вы спрашиваете, поэтому я просто угадаю. Если вы спрашиваете, как делиться информацией между UIView, и ваша проблема в том, что каждый рассматриваемый UIView не знает о другом.

Простым способом глобального обмена информацией о вашем приложении было бы создание статического класса в соответствии с шаблоном разработки Singleton, который каждый UIView может получить доступ и изменить.

//header
@interface MySingleton {
   NSIndexPath* myIndexPath;
}
@property (nonatomic, retain) myIndexPath;
+(id) globalSingleton;
@end

В исходном (.m) файле

//source
static MySingleton* singleton = nil;

@implementation MySingleton 
@synthesize myIndexPath;

+(id) globalSingleton {
   if (singleton == nil) {
      singleton = [MySingleton new];
   }
   return singleton;
}
@end

Возможно, я неправильно понял ваш вопрос, и это решение может быть не лучшим способом решения вашей проблемы. Пожалуйста, уточните дизайн вашего интерфейса, и мы можем помочь больше. Удачи.

- EDIT: Из того, что вы говорите, первое решение должно быть применимо. Когда вы получаете сообщение «isSelected» в TableView, вы должны создавать объект WebView. Просто перезапишите функцию init, чтобы принять все необходимые параметры, в этом случае NSIndexPath выбранной таблицы. Я уверен, что на developer.apple.com есть несколько примеров поиска проектов с использованием настраиваемых контроллеров UITableView и Navigation View.

...