Привет У меня есть приложение в тот момент, когда в настоящее время имеется контроллер с раздельным просмотром. Что я хочу сделать, так это добавить экран входа в систему, чтобы появиться до появления остальной части приложения, или если это невозможно, оно может появиться в левой части экрана контроллера навигации.Экран входа в SplitView Ipad
В моем приложении делегат в настоящий момент
// Override point for customization after application launch.
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
//Grab storyBoard
UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPad" bundle:nil];
//Grab a reference to the UISplitViewController
UISplitViewController *splitViewController = (UISplitViewController *)self.window.rootViewController;
UINavigationController *navigationController = [splitViewController.viewControllers lastObject];
//splitViewController.delegate = (id)navigationController.topViewController;
//NEW IMPLEMENTATION BELOW
//Grab a reference to the RightViewController and set it as the SVC's delegate.
RightViewController *rightViewController = (RightViewController *) [[splitViewController.viewControllers objectAtIndex:1] topViewController];
splitViewController.delegate = rightViewController;
//Grab a reference to the LeftViewController and get the first asset in the list.
UINavigationController *leftNavController = [splitViewController.viewControllers objectAtIndex:0];
LeftViewController *leftViewController = (LeftViewController *)[leftNavController topViewController];
AssetTracking *firstAsset = [[leftViewController assets] objectAtIndex:0];
//Set it as the RightViewController's monster.
[rightViewController setAssetTracking:firstAsset];
//Set the RightViewController as the left's delegate.
leftViewController.delegate = rightViewController;
}
return YES;
}
Я пытался добавить это, но это не похоже на работу
LoginViewController *lvc = (LoginViewController *) [storyBoard instantiateViewControllerWithIdentifier:@"login123"];
lvc.modalPresentationStyle = UIModalPresentationFullScreen;
[splitViewController presentViewController:lvc animated:NO completion:nil];
Если добавить его в конце я получаю сообщение об ошибке при попытке для его запуска
Предупреждение: попытка представить LoginViewController: 0x9b5c5a0 на UISplitViewController: 0x9b64120, чей вид не находится в иерархии окон!
Есть ли способ заставить этот экран работать/появляться. В настоящее время представление на раскадровке не связано ни с чем с помощью segue, и я просто вызываю его по идентификатору.
Это метод я использую для проверки пользователя
- (IBAction)enterCredentials
{
NSString *hashedPassword = @"";
hashedPassword = [self sha1:(passwordField.text)];
if ([[credentialsDictionary objectForKey:usernameField.text]isEqualToString:hashedPassword]) {
if([rememberLogin isOn])
{
NSLog(@"save user details");
if ([usernameField text ]){
[keychain setObject:[usernameField text] forKey:(__bridge id)kSecAttrAccount];
}
// Store password to keychain
if ([passwordField text]){
[keychain setObject:[passwordField text] forKey:(__bridge id)kSecValueData];
}
}else
{
NSLog(@"not saving user details");
[keychain resetKeychainItem];
}
usernameField.text = @"";
passwordField.text = @"";
//[self dismissViewControllerAnimated:NO completion:nil];
[self performSegueWithIdentifier:@"loginCorrect" sender:self];
}
else {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"" message:@"The Username Or Password You Entered Is Incorrect" delegate:self cancelButtonTitle:@"Dismiss" otherButtonTitles:nil];
[alert show];
}
}
Так что теперь, если я установить его в качестве RootViewController в DidFinishLaunchWithOptions, как я могу получить обратно к установке другого, как мой rootView, когда пользователь проверен. См. Выше, чтобы увидеть метод, который я использую для их проверки. Я пытался использовать segue, но это, очевидно, больше не будет работать – Karl
Когда пользователь будет проверен, вы можете сообщить сообществу appDelegate или другому ответственному экземпляру через шаблон делегирования или уведомления. Когда ответственный экземпляр информирован, он может поменять окно window.rootViewController appDelegate обратно на UISplitViewController. –
Извините, но не могли бы вы объяснить, как это сделать? Спасибо – Karl