rubik
rubik

Reputation: 602

from second ViewController to first ViewController

I have 2 ViewControllers, in 1st - TableView and in 2nd - button with label on it. When I click on the button in 2nd ViewController I need to go back on TableView and set in

cell.detailTextLabel.text

text from label on the button.

For go back to first view I use:

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

but how I can set label from second view to:

cell.detailTextLabel.text

in first view?????

Upvotes: 3

Views: 1055

Answers (3)

Gurinder Singh
Gurinder Singh

Reputation: 1

[self.navigationController popViewControllerAnimated:YES];

Upvotes: 0

user1590031
user1590031

Reputation: 308

I would define a protocol & delegate in the second view controller

@protocol SecondViewController;

@interface SecondViewController : UIViewController

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

@end


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

then when the button is tapped call the delegate:

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

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

In your first view controller implement the protocol

@interface FirstViewController : UIViewController <SecondViewControllerDelegate>

when you push the second view controller, set the first as the second delegate:

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

And implement the delegate method to get notified when the button tapped

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

Upvotes: 2

John Smith
John Smith

Reputation: 2022

To access a parent class method or property you gotta implement a protocol, and use it's delegates. You can access child class methods/properties using it's class object that you create in the current (parent) class. But how you want to access a parent class entity from a child class? YES, implementing protocols.

Or the newbie way: after tapping your button, save the needed value into NSUserDefaults. Then, when you go to your parent class (viewController 1), ion viewWillAppear, check that saved value, and if it's not nil, display it.

Upvotes: 0

Related Questions