2015-05-20 6 views
-1

Мне нужно передать данные между двумя ViewControllers, но без UIButton, в нескольких словах, мне нужно получить доступ к переменной, которая находится в другом ViewController. Мой код:Передача данных между двумя ViewControllers

LoginViewController *lvc; 
NSString name=lvc.name; 
+0

Вы хотели получить доступ к переменной из LoginViewController? – Gati

+0

Предоставьте больше информации о том, чего вы пытаетесь достичь, и о том, что вы сделали. –

+0

Я одобрил редактирование по ошибке, пожалуйста, не одобряйте его, так как заголовок заблокирован. – Maroun

ответ

1

Этот конкретный случай может быть немного легче, чем делегаты.

Из того, что я вижу, вы пытаетесь передать учетные данные для входа (имя/логин/пароль/что-то). Я бы использовал две вещи в зависимости от фактического вопроса здесь.

Либо NSUserDefaults или -performSegueWithIdentifier:

NSUserDefaults является файл, который загружается в каждом приложении, которое вы можете прочитать и отредактировать, просто используя следующие команды:

Установка переменной:

NSString *aName; 
[[NSUserDefaults standardUserDefaults]setObject:aName forKey:@"userName"]; 

Получение переменной:

NSString *aName = [[NSUserDefaults standardUserDefaults]objectForKey:@"userName"]; 

Внимание: вы можете сохранить следующие объекты: NSDictionary, NSArray, NSString, NSNumber, NSData и, возможно, пара, которую я забываю, но кто-то может ее отредактировать, если я это сделаю.

Обратите внимание, что этот файл загружается при каждом запуске, поэтому вы не хотите использовать его в качестве базы данных, но большая часть небольшого хранилища проста в использовании, например, для имени пользователя, настроек/настроек и тому подобного ,

Другой способ использует performsegue между двумя контроллерами, но для этого требуется storyboards.

Перетащите сегг между двумя контроллерами, назовите его (например) fromLoginToHome. Я предполагаю, что поток идет от контроллера входа в домашний контроллер.

при перемещении между двумя точками зрения (когда пользователь нажимает «Вход», например), вызовите этот метод

[self performSegueWithidentifier:@"fromLoginToHome" sender:self]; 

Тогда вам нужно реализовать этот метод, который, как правило, там, но в блок комментариев (это всегда так, когда вы создаете свой Vc)

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 

    if([segue.identifier isEqualToString:@"fromLoginToHome"]){ 

     HomeViewController *vc = (HomeViewController*)segue.destinationViewController; 
     vc.myName = _myName; 

     } 
} 
0

Здесь вы можете посмотреть метод делегата delegate. Вы можете сказать мне, если вы ищете делегата или нет

Попробуйте использовать как ниже FirstViewController.h

@interface FirstViewController: UIViewController 
- (void)GetItNow; 

FirstViewController.m

- (void)GetItNow{ 
    NSLog(@"I acheived"); } 

    - (IBAction)goToSecondView:(id)sender { 

    SecondViewController* Second= [[SecondViewControlleralloc] initWithNibName:@"SecondViewController" bundle:nil]; 
    rqVC.addId = self.addId; 
    [self.view addSubview:Second.view]; 

} 

SecondViewController.h

@property (nonatomic, assign) id delegate; 

SecondViewController.m

- (IBAction)Action_LoadFunds:(id)sender { 
    [self.view removeFromSuperview]; 
    [_delegate GetItNow]; 

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