Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to tell a viewcontroller to update its UI from another class

I am trying to understand how updating of a viewController that is currently visible works. I have ViewControllerA and ClassA. I want to tell ViewControllerA to reloadData on the tableview from ClassA. What is the best way to go about doing this?

I have found this question and answer but I dont think this will work in my situation or I am not understanding it correctly.

like image 903
BluGeni Avatar asked Nov 27 '25 18:11

BluGeni


1 Answers

The easiest way without knowing your setup would be to use NSNotificationCenter. Here is what you could do:

In ViewControllerA add in hooks for NSNotificationCenter:

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];

    //Register for notification setting the observer to your table and the UITableViewMethod reloadData. So when this NSNotification is received, it tells your UITableView to reloadData
    [[NSNotificationCenter defaultCenter] addObserver:self.table selector:@selector(reloadData) name:@"ViewControllerAReloadData" object:nil];
}

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];

    //Need to remove the listener so it doesn't get notifications when the view isn't visible or unloaded.
    [[NSNotificationCenter defaultCenter] removeObserver:self];
}

Then in ClassA when you want to tell ViewControllerA to reload data just post the NSNotification.

- (void)someMethod {
    [[NSNotificationCenter defaultCenter] postNotificationName:@"ViewControllerAReloadData" object:nil];
}
like image 113
random Avatar answered Nov 30 '25 06:11

random



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!