2015-11-15 2 views
0

NB: Первое приложение;Создать кнопку выхода

В настоящее время я пытаюсь создать кнопку выхода для приложения, которое я создал. По существу, на нагрузке, пользователю предоставляется LoginViewController.xib 2 текстовых полей и кнопки, при условии, что текстовые поля отвечают аргументы, когда кнопка нажата, следующий аргумент выполняется:

if (success) { 
     AppDelegate *appDelegate = [UIApplication sharedApplication].delegate; 
     [appDelegate.window setRootViewController:appDelegate.tabBarController]; 
    } 

Этот отлично работает, и пользователь загружается в приложение с помощью контроллера табуляции, который переключается между 3 xib (Главная, Настройки, Таблица).

На вкладке настроек у меня есть кнопка «LogOut», которая при нажатии, я хотел бы, чтобы пользователь был возвращен в «LoginViewController.xib», но я не могу найти способ сделать это из учебников на YouTube или в Интернете.

Для кодировки настроек см. Ниже;

SettingsViewController.h:

SettingsViewController.m:

#import "SettingsViewController.h" 

@interface SettingsViewController() 

@end 

@implementation SettingsViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view from its nib. 
} 

- (void)didReceiveMemoryWarning { 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 

- (IBAction)LogOutClick:(id)sender { 
    [self dismissViewControllerAnimated:YES completion:nil]; 
} 

@end 

ответ

1

Вызов dismissViewControllerAnimated: не собирается, чтобы помочь в вашей панели вкладок контроллера/Настройки просмотра контроллер не представлен ни в контроллерах представления. Исходный контроллер входа, насколько я могу судить по указанному вами коду, больше не существует в памяти и, как результат, вы не можете «вернуться» к нему.

У вас есть два варианта: один должен представить контроллер входа в систему на контроллере панели вкладок, а другой - изменить контроллер корневого окна окна на контроллер входа. Например,

//Present over tab bar 
- (IBAction)LogOutClick:(id)sender { 
    LoginViewController *loginController = [[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:nil]; 
    [self presentViewController:loginController animated:YES completion:nil]; 
} 

//Switch root view controller 
- (IBAction)LogOutClick:(id)sender { 
    LoginViewController *loginController = [[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:nil]; 
    [appDelegate.window setRootViewController:loginController]; 
} 

На мой взгляд, первый способ - лучший способ делать вещи. После того как контроллер входа в систему был уволен, вы можете заполнить представления контроллера панели табуляции соответствующими данными. Однако, поскольку контроллер входа в систему уже имеет метод, который переключает контроллер корневого представления окна, вам может быть проще просто переключить контроллер корневого представления обратно на контроллер входа.

+0

Легенда! Как вы предположили, для этого приложения предпочтительнее второй метод, и это сработало! Просто нужно было добавить строку, чтобы переопределить «appDelegate», а оттуда - никаких кликов! Благодаря! –

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