От второго ViewController до первого ViewController

70
8

У меня есть 2 ViewControllers, в 1-м - TableView и 2-я кнопка с меткой на нем. Когда я нажимаю кнопку во втором ViewController, мне нужно вернуться в TableView и установить в


cell.detailTextLabel.text

текст с метки на кнопке.


Для возврата к первому виду я использую:


[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:1] animated:YES];

но как я могу установить метку со второго представления на:


cell.detailTextLabel.text

с первого взгляда?????

спросил(а) 2020-04-04T03:13:36+03:00 5 месяцев, 4 недели назад
1
Решение
69

Я бы определил протокол и делегат во втором контроллере представления


@protocol SecondViewController;

@interface SecondViewController : UIViewController

@property (nonatomic, assign) id<SecondViewController> delegate;

@end

@protocol SecondViewController <NSObject>
- (void)secondViewController:(SecondViewController *)controller didTappedOnButton:(UIButton *)button;
@end


затем, когда кнопка нажата, вызовите делегата:


- (IBAction)buttonTapped:(UIButton *)sender
{
// do somthing..

// then tell the delegate about the button tapped
[self.delegate secondViewController:self didTappedOnButton:sender];
}


В вашем первом представлении контроллер реализует протокол

@interface FirstViewController : UIViewController <SecondViewControllerDelegate>

когда вы нажимаете второй контроллер представления, установите первый как второй делегат:


- (void)someMethodThatPushTheSecondViewController
{
SecondViewController *svc = [[SecondViewController alloc] init];
[self.navigationController pushViewController:svc animated:YES];
svc.delegate = self;
}

И внедрить метод делегата, чтобы получить уведомление, когда кнопка нажата


- (void)secondViewController:(SecondViewController *)controller didTappedOnButton:(UIButton *)button
{
// do somthing after button tapped
// you can get the button title from button.titleLabel.text
}

ответил(а) 2020-04-04T03:28:25.694918+03:00 5 месяцев, 4 недели назад
40

[self.navigationController popViewControllerAnimated:YES];

ответил(а) 2020-04-04T03:13:36+03:00 5 месяцев, 4 недели назад
41

Чтобы получить доступ к методу или свойству родительского класса, вы должны реализовать протокол и использовать его делегатами. Вы можете получить доступ к методам/свойствам дочернего класса, используя объект класса, созданный в текущем (родительском) классе. Но как вы хотите получить доступ к объекту родительского класса из дочернего класса? YES, реализация протоколов.

Или способ новичков: после нажатия на кнопку сохраните необходимое значение в NSUserDefaults. Затем, когда вы перейдете к своему родительскому классу (viewController 1), ion viewWillAppear, проверьте это сохраненное значение, а если оно не равно, отобразите его.

ответил(а) 2020-04-04T03:13:36+03:00 5 месяцев, 4 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема