2014-12-19 2 views
-1

Я новичок в разработке ios, и я создаю приложение с 2 контроллерами представлений. Я использую Protocols and Delegates для передачи данных с одного контроллера на контроллер предварительного просмотра. Данные передаются в порядке . Моя проблема заключается в том, что код, который находится в методе из протокола, который реализован в контроллере, который получает данные, не выполняется. NSLOG, который находится в методе, выполняется, но остальная часть gode no. Любые идеи, почему это происходит?Код в методе от protocole не выполнен

код из контроллера, который посылает данные:

.h

@class GeoCoding_controller; 

@protocol GeoContDelegate <NSObject> 

-(void)addItemViewController:(GeoCoding_controller *)controller didFinishEnteringItem:  (NSString *)item; 
@end 

.m

NSString *itemToPassBack = [NSString stringWithFormat:@"%@,%@,%@",final_loc[indexPath.row][@"form_address"],final_loc[indexPath.row][@"lat"],final_loc[indexPath.row][@"lng"]];; 

    First_view_controller *first_cont = [self .storyboard instantiateViewControllerWithIdentifier:@"first_view"]; 

[self presentViewController:first_cont animated:YES completion:nil]; 

[self.delegate addItemViewController:self didFinishEnteringItem:itemToPassBack]; 

код в контроллер, который получает данные:

.h

@interface First_view_controller : UIViewController<CLLocationManagerDelegate,GMSMapViewDelegate,GeoContDelegate> 

.m

-(void)addItemViewController:(GeoCoding_controller *)controller didFinishEnteringItem:(NSString *)item{ 


double delay = 10.0; 

dispatch_time_t poptime = dispatch_time(DISPATCH_TIME_NOW, delay * NSEC_PER_SEC); 

dispatch_after(poptime, dispatch_get_main_queue(), ^{ 


     NSArray *foo = [item componentsSeparatedByString:@","]; 

     NSString *address = [NSString stringWithFormat:@"%@ %@ %@",[foo objectAtIndex:0],[foo objectAtIndex:1],[foo objectAtIndex:2]]; 

     double lat = [[foo objectAtIndex:3]doubleValue]; 

     double lng =[[foo objectAtIndex:4] doubleValue]; 


     GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:lat longitude:lng zoom:18]; 

     MAP.camera = camera; 

     edtaddress.text = address; 



     NSLog(@"data from controller : %@", item); 

    }); 

}

+1

Пожалуйста, добавьте код на ваш вопрос. –

+0

И, пожалуйста, просто разместите соответствующий код. Нет необходимости во всех файлах .h и .m обоих классов. – rmaddy

+0

Извините за то, что вы не добавили код сначала !!! – user3734693

ответ

1

Вы не установить делегата для себя, вы должны сделать:

self.delegate = first_cont; 

после

First_view_controller *first_cont = [self .storyboard instantiateViewControllerWithIdentifier:@"first_view"]; 
+0

он работает как шарм! Большое спасибо! – user3734693

Смежные вопросы