Краткое описание того, что я пытаюсь сделать.
Я использую tableView: didSelectRowAtIndexPath: метод внутри моего подкласса UITableViewController, который перехватывает выбор строки из этого представления следующим образом ...
//..... inside tableView:didSelectRowAtIndexPath:
if (indexPath.section == 0) {
//--- Get the subview ready for use
VehicleSearchResponseTableViewController *vehicleSearchResponseTableViewController = [[VehicleSearchResponseTableViewController alloc] initWithNibName:@"VehicleSearchResponseTableViewController" bundle:nil];
// ...
//--- Sets the back button for the new view that loads
self.navigationItem.backBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"Back" style: UIBarButtonItemStyleBordered target:nil action:nil] autorelease];
// Pass the selected object to the new view controller.
[self.navigationController pushViewController:vehicleSearchResponseTableViewController animated:YES];
if(indexPath.row == 0) {
vehicleSearchResponseTableViewController.title = @"Mans";
EngineRequests *engineRequest = [[EngineRequests alloc] init];
[engineRequest getMans];
[engineRequest release];
}
if(indexPath.row == 1) {
//.... etc etc
Как вы можете видеть в этом методе, я настроил несколько вещей, помещая новый вид в стек просмотра и изменяя текст кнопок назад, затем я перехватываю различные строки и затем инициирую метод вподкласс nsobject, где я хочу, чтобы все мои соединения / запросы происходили.
Внутри моего NSObject у меня есть несколько различных методов для разных ячеек, которые вы можете выбрать в UITableViewController, в основном они задают разные строки, которые будутзатем инициализируйте мою оболочку ASIHTTPRequest, чтобы установить соединение со сценарием php и перехватить все данные, которые будут возвращены из базы данных. NSObject выглядит следующим образом.
//.... NSObject.m
- (IBAction) getMans
{
NSString *mansString = [[NSString alloc] initWithString:@"mans.php"];
[self grabURLInBackground:mansString];
[manusString release];
}
//....cont....
//--- Connect to server and send request ---------------->>
- (IBAction)grabURLInBackground:(NSString *)setUrlString
{
NSString *startURL = [NSString stringWithFormat:@"http://127.0.0.1:8888/CodeTest/%@", setUrlString];
NSURL *url = [NSURL URLWithString:startURL];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request setDelegate:self];
[request startAsynchronous];
}
- (void)requestFinished:(ASIHTTPRequest *)request
{
NSString *responseString = [request responseString]; //Pass request text from server over to NSString
NSData *responseData = [responseString dataUsingEncoding:NSUTF8StringEncoding]; //Create NSData object for Parser Delegate and load with responseString
NSLog(@"stuff %@",responseData);
}
- (void)requestFailed:(ASIHTTPRequest *)request
{
NSError *error = [request error];
NSLog(@"%@", error);
}
Отсюда я хотел бы передать данныеЯ получаю от метода requestFinished обратнок недавно выдвинутому UITableView .. Однако у меня есть ошибка, прежде чем я смог получить это далеко, что мне нужно решить ... если я запустил симулятор и щелкаю вперед и назад между представлениями (основной UITableViewController с ячейками, а затемнедавно появившееся представление, в которое я хочу поместить данные) приложение падает и выдает ошибку в main.m Thread 1: программа получает сигнал EXC_BAD_ACCESS .. Я просто не знаю, что вызывает, потому что изчто я могу сказать, мой код не так уж плох.
Также, когда я отлаживаю свое приложение, я замечаю, что, как только метод grabURLInBackground завершил его, он возвращается обратно к методу getMans, затем возвращается к UITableViewController и продолжается черезЕсли операторы, полностью игнорируя методы requestFinished и requestFailed, и я просто не могу понять, почему.
Я думаю, я не уверен, что я вызываю методы и функции, которые мне нужно использовать в нужных местах, так что если выесть какие-либо предложения или ответы о том, как я могу имдокажите или, если вы знаете, откуда исходит моя ошибка, это будет высоко оценено.