У меня есть довольно интересная логика, в основном у меня есть эти данные, которые я хочу проверить перед тем, как отобразить следующее представление ... на случай, если данные пустые, я хочу выскочить представление, если данные не пустызатем я хочу загрузить представление для отображения его в стеке навигации.
, поэтому в моем tableView: didSelectRowAtIndexPath: метод, когда выбор сделан, я получаю текущий идентификационный номер выбора, чтобы я мог ограничить значенияданных, которые я собираюсь проанализировать только для связанных значений.
Это то, как код выглядит внутри моего метода.
#pragma mark - Table view delegate
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
///... This stuff is for context..
//Get the subview ready for use
VSRViewController *vSRViewController = [[VSRViewController alloc] initWithNibName:@"VSRViewController" bundle:nil];
//Sets the back button for the new view that loads (this overrides the usual parentview name with "Back")
self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Back" style: UIBarButtonItemStyleBordered target:nil action:nil];
//Pass Title over to subview
vSRViewController.title = @"SubModel";
//Selected cell gives restult to the subview or o the parent view to be displayed.. when the view is pushed or poped
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%K like %@",@"MODEL",cell.textLabel.text];
filterArray = [parsedDataArrayOfDictionaries filteredArrayUsingPredicate:predicate];
//Sets restriction string so that when subCacheData is parsed only values mathching modIdString will be parsed
modIdString = [[filterArray valueForKey:@"MODID"] objectAtIndex:0]; //Restricts Mods dataset
//This sets which if statment to enter in parserDidEndDocument
dataSetToParse = @"ModID";
[self startTheParsingProcess:modCacheData];
//tempModArra is the array I get back from the parser that has had the restriction string applied to it
if ([tempModArray count] == 0) {
NSLog(@"POPVIEW"); //testing
//pop this view to the parent view.. organize all the values that have to be sent back with protocols and delegates
}else if ([tempModArray count] != 0){
//Pass the selected object to the new view controller.
[self.navigationController pushViewController:vSRViewController animated:YES];
//Check if modIndexPath is same as selected if not remove accessory tick from the subview
if (![modIndexPath isEqual:indexPath]){
submodIndexPath = nil;
}
[vSRViewController subModelCachedData:modCacheData indexPath:submodIndexPath dataSetToParse:@"ICSum" modelArray:filterArray modIndexPath:indexPath];
//.....
}
}
}
//...
Этот код был отредактирован для удобства чтения, есть многодругие вещи, происходящие в нем ... поэтому некоторые вещи могут быть неправильными ... как я отредактировал некоторые имена ... но это должно быть хорошо ..
Это то, что происходит в моем делегате синтаксического анализатора.
- (void)parserDidEndDocument:(NSXMLParser *)parser
{
//.. other stuff up here.
if (dataSetToParse == @"ModID") {
//This applies the
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%K like %@",@"ModID",modIdString]; //modIdString restricts results that have been parsed
NSArray *filteredArray = [parsedDataArrayOfDictionaries filteredArrayUsingPredicate:predicate];
tempModArray = filteredArray;
//what do I do here to get tempModArray back up to tableView:didSelectRowAtIndexPath: method.. this is where I am abit lost.
}
}
Вот и все ... все работает, единственная проблема в том, что я не могу вернуть свой temoModArray обратно в tableView: didSelectRowAtIndexPath: поэтому мне нужна помощьЗадумка о решении.
Также для контекста я делаю это потому, что если в tempModArray нет значений, я бы хотел отправить пользователя обратно в родительское представление, чтобы они не видели пустое представление таблицы, когдаиду в подпредставление, чтобы сделать выбор .. надеюсь, что все это имеет смысл .. Я с нетерпением жду нашего ответа.