Я работаю над проектом XMPP. Я создал соединение и смог успешно войти в систему. Но у меня есть методы настройки и все в методе appdelegate [connect]. поэтому, когда я успешно подключился к приложению, но когда мне нужно получить список друзей, мне нужно снова вызвать метод appdelegate [connect], поэтому я хочу установить все условие и все в viewcontroller Loginbutton. поэтому, когда второй метод appdelegate [connect] вызывает это, он не влияет на другой контроллер представления, а также результат. Я пробовал это с объявлением метода BOOL, но я не увенчался успехом. вот моя попытка.ios xmpp вызывает другой контроллер viewview от контроллера oneview через appdelegate
//appdelegate.m file//
-(BOOL) isauthenticate; // Mthod declaration
- (BOOL)connect
{
// HUD = [MBProgressHUD showHUDAddedTo:self.navigationController.view animated:YES] ;
//HUD.delegate = self;
HUD = [[MBProgressHUD alloc ] initWithWindow:[UIApplication sharedApplication ].keyWindow]; [self.window.rootViewController.view addSubview:HUD];
[HUD setDetailsLabelText:@"Please wait..."];
[HUD setDimBackground:YES];
[HUD setOpacity:0.5f];
[HUD show:YES];
// HUD.color =[UIColor colorWithPatternImage:[UIImage imageNamed:@"logo"]];
// [HUD hide:YES afterDelay:10.0];
if (![xmppStream isDisconnected]) {
return YES;
// isauthenticate=YES;
}
NSString *myJID = [[NSUserDefaults standardUserDefaults] stringForKey:kXMPPmyJID];
NSString *myPassword = [[NSUserDefaults standardUserDefaults] stringForKey:kXMPPmyPassword];
//
// If you don't want to use the Settings view to set the JID,
// uncomment the section below to hard code a JID and password.
//
// myJID = @"[email protected]/xmppframework";
// myPassword = @"";
if (myJID == nil || myPassword == nil) {
return NO;
}
[xmppStream setMyJID:[XMPPJID jidWithString:myJID]];
password = myPassword;
NSError *error = nil;
if (![xmppStream connectWithTimeout:XMPPStreamTimeoutNone error:&error])
{
HUD.hidden=YES;
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error connecting"
message:@"See console for error details."
delegate:nil
cancelButtonTitle:@"Ok"
otherButtonTitles:nil];
[alertView show];
// DDLogError(@"Error connecting: %@", error);
// return NO;
}
return YES;
}
Вот мой Viewcontroller.m файл
//viewcontroller.m file//
- (IBAction)checkLogin:(id)sender {
[self dismissKeyboard];
// HUD = [MBProgressHUD showHUDAddedTo:self.navigationController.view animated:YES] ;
// HUD.delegate = self;
NSLog(@"Email: %@ Password: %@",mViewEmail.text,mViewPassword.text);
[self setField:mViewEmail forKey:kXMPPmyJID];
[self setField:mViewPassword forKey:kXMPPmyPassword];
if ([[self appDelegate ]connect])
{
if (appdelegate.isauthenticate==YES) {
//appdelegate.isauthenticate=YES;
[self showHome];
}
else
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Sorry"
message:@"Please Check Username or Password"
delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert show];
}
}
}
- (void)showHome{
//[[self appDelegate]isauthenticate];
[self performSegueWithIdentifier:@"signIn" sender:self];
}
что такое решение для этого?
так как я могу установить это в контроллере buddlist? В настоящее время я использую это условие для просмотра списка друзей. 'if ([[self appDelegate] connect]) { titleLabel.text = [[[[self appDelegate] xmppStream] myJID] bare]; } else { titleLabel.text = @ "Нет JID"; } [названиеLabel sizeToFit]; self.navigationItem.titleView = названиеLabel; ' –
На самом деле вы проверяете свою аутентификацию с помощью jid и pwd, если они аутентифицированы или нет. вы не управляете списком контактов. –
да, вы правы, но когда я использую это условие, он снова вызовет метод подключения, и моя страница снова будет перенаправлена на главную. Потому что connectiondidauthenticate снова выполняется. поэтому, я хочу реализовать segue только в системе входа. –