Передать свойство пользовательского UIBEATYViewcell до пункта назначения в методе Preparefersege
-
12-12-2019 - |
Вопрос
Я работаю над приложением для iPhone с помощью раскадровки.
У меня есть UiableView в UinavidationView.где я загружаю данные в пользовательских ячеек.И тогда я, когда пользователь нажимает на ячейку, я перехожу к другому представлению (RecventView).
Я настроил вид и сам в раскадровке.
Моя цель - передавать данные к результатам метода Prepareforsege.
Для этого я создал пользовательскую клетку, которая реализует UiableViewCell.И тогда я добавил свойство типа NSDate имени: TreateState.Мне нужно пройти дату создания выбранной ячейки к результатам. У меня есть следующие ate= cithcell.creationdate;
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if([segue.identifier isEqualToString:@"resultViewSegue"])
{
//Get a reference to the destination
ResultsViewController * destinationView = segue.destinationViewController;
//I try to get the selected cell in order to pass it's property
historyCellClass * selectedCell = (historyCellClass*) sender;
//pass the creation date to the destination view (it has its own creation date property)
[destinationView setCreationDate:selectedCell.creationDate];
}
}
.
Однако дата создания даты результата всегда ноль.
Похоже, я не получаю ссылку на выбранную ячейку, чтобы прочитать его свойство.
Как я могу пройти дату ячейки на следующий вид?
Большое спасибо для любой помощи
Решение
То, как я обработал, это с ручным запускам Segue и IVAR, представляющему состоянию выбора.
Убедитесь, что срабатывание в Segue идет с одного контроллера представления до следующего (не из одной из ячеек TableView).
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
self.selectedModel = [self.myModel objectAtIndex:indexPath:row];
[self performSegueWithIdentifier:@"resultsViewSegue"];
.
ВыбранныеModel - это новый IVAR, тип которого такой же, как один элемент в массиве, который поддерживает создание таблицы.Посмотрите на это с помощью индекса Path именно так, как вы бы в CellForeatindexpath:.
сейчас в Prepareforgege: ..
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if([segue.identifier isEqualToString:@"resultViewSegue"])
{
//Get a reference to the destination
ResultsViewController * destinationView = segue.destinationViewController;
//pass the creation date to the destination view (it has its own creation date property)
[destinationView setCreationDate:self.selectedModel.creationDate];
// selectedModel.creation date might not be right... use whatever way you get to creationDate
// from the indexPath in cellForRowAtIndex path, that's the code you want above.
}
}
.
Есть несколько вариантов для того, чтобы сохранить между выбором обзора таблицы и началом Segue.Вы можете сохранить выбранный путь индекса, или элемент модели, как я предлагаю, или просто аспект модели, которую вы намереваетесь пройти вперед (TROVESTDATE в вашем E.G.).Единственная плохая идея для сохранения состояния - это сама клетка таблицы.