Я разрабатываю приложение для iPhone на основе панели вкладок.Процесс следующий: при запуске приложения я выкидываю модальное представление с формой входа в систему:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
tabBarController.delegate = self;
// Add the tab bar controller's view to the window and display.
self.window.rootViewController = self.tabBarController;
[self addTabBarArrow];
LoginViewController *loginViewController = [[LoginViewController alloc] init];;
[window addSubview:tabBarController.view];
[self.tabBarController presentModalViewController:loginViewController animated:YES];
[window makeKeyAndVisible];
return YES; }
В модальном представлении входа в систему LoginViewController.h (child) У меня реализован протокол:
@protocol PassUserInfoDelegate <NSObject>
@required
- (void) passUserInfo: (NSString *)string;
@end
Когда пользователь заполняет форму, я создаю NSURLConnection, и в методе connectionDidFinishLoading я получаю пользовательские значения из запроса JSON:
-(void)connectionDidFinishLoading:(NSURLConnection *)connection {
NSString *respuestaServidor = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
self.responseData = nil;
NSDictionary *dictionary = [respuestaServidor JSONValue];
idJson = [dictionary objectForKey:@"id"];
NSString *user_loginJson = [dictionary objectForKey:@"user_login"];
if ([idJson isEqualToString:@"null"] && [user_loginJson isEqualToString:@"null"]) {
NSLog(@"Login incorrecto");
} else {
NSLog(@"Procedo a loguear usuario");
}
[indicator stopAnimating];
[indicator release];
}
В HomeViewController.h (родитель) У меня есть делегирование:
@interface HomeViewController : UIViewController <PassUserInfoDelegate> {
LoginViewController *protocolTest;
IBOutlet UILabel *nombreUsuario;
NSString *usuario;
}
@property (nonatomic, retain) IBOutlet UILabel *nombreUsuario;
@property (copy) NSString *usuario;
- (void) passUserInfo:(NSString *)string;
@end
и в HomeViewController.m я реализую метод Protocol:
- (void) passUserInfo:(NSString *)jSonString
{
userName.text = [[NSString alloc] initWithFormat:@"Welcome %@", jSonString];
}
и в методе viewDidAppear я вызываю loginSuccessметод, реализованный в классе LoginViewController
-(void) viewDidAppear:(BOOL)animated{
protocolTest = [[LoginViewController alloc] init];
[protocolTest setDelegate:self];
[protocolTest loginSuccess];
}
метод loginSuccess, реализованный в классе LoginViewController:
- (void)loginSuccess
{
[[self delegate] passUserInfo:idJson];
}
, и он должен передать значение idJson HomeViewController (parent).Проблема в том, что когда я отклоняю модальную форму представления, значение idJson равно «NIL», поэтому в HomeViewController я не могу получить это значение.Если я сделаю это вместо:
[[self delegate] passUserInfo:@"hello"];
Я получу строку приветствия в HomeViewController (родительский) Что я делаю не так ?? *
Заранее спасибо !!!