Ну,
В моем приложении есть панель вкладок, и одна из ее кнопок - "настройка".В этом представлении у меня есть только кнопка «забыть», которая отвечает за «удаление» цепочки для ключей пользователя.Пользователь может сохранить связку ключей в первом представлении (ModalView) приложения, вызываемого в AppDelagate.Итак, я сомневаюсь, как я могу удалить эту цепочку для ключей в другом классе?Я создал ConfigurationViewController в AppDelagate и инициировал цепочку ключей, но она не работает.
AppDelegate:
ConfigurationViewController *_cvc = [[[ConfigurationViewController alloc] initWithNibName:@"ConfigurationViewController" bundle:[NSBundle mainBundle]] autorelease];
self.cvc = _cvc;
cvc.keychain = self.keychain;
[cvc release];
ConfigurationViewController.h:
#import <UIKit/UIKit.h>
#import "InformationViewController.h"
#import "KeychainItemWrapper.h"
@interface ConfigurationViewController : UIViewController {
KeychainItemWrapper *keychain;
}
@property (nonatomic, retain) KeychainItemWrapper *keychain;
@ end
ConfigurationViewController.m:
- (IBAction)forget:(id)sender
{
// Erase all information saved in KeyChain
[ keychain resetKeychainItem ];
// Pass the selected object to the new view controller.
[ self.tabBarController setSelectedIndex:0 ];
}
Я не знаю, нужно ли только для сброса цепочки для ключей ...
РЕДАКТИРОВАТЬ 1:
Вкл. AppDelegate.m Я проверяю, есть ли информация о keyChain.
if ( hasInformation ) {
...
} else {
// open a presentModalViewController with a form to fill with login information
[ rootTabBarController presentModalViewController:lvc animated:NO ];
}
Вкл. LoginViewController.m :
if ( allFormIsOkay ) {
// store username
if ( [login text] )
[ keychain setObject:[login text] forKey:(id)kSecAttrAccount ];
// Store password
if ( [password text] )
[ keychain setObject:[password text] forKey:(id)kSecValueData ];
} else {
[ keychain resetKeychainItem ];
}
[ self dismissModalViewControllerAnimated:YES ];
И я пытаюсь «стереть» связку ключей на ConfigurationViewController (я уже показал).