Delegates or Properties, take your pick.
PROPERTIES
Class A (ViewController) wants to communicate with Class B (ViewController)
Before calling Class B, do the following:
In Class B, create a @property NSString* receivedValue;
In Class A,
#import Class B
then in the method that calls B (either prepareForSegue or didSelectRowAtIndexPath or some method where you present Class B view controller, do the following:
Class B *calledVC = alloc/init
calledVC.receivedValue = ‘whatever value you want to pass’;
then call Class B VC
Done!
DELEGATES
Let’s say Class B wants to notify Class A that something has finished. In Class B add this above your @interface:
@protocol YourDelegateProtocol <NSObject>
- (void)itemWillBePassed;
@end
Then in the regular Class B @interface
@property (nonatomic, weak) id <YourDelegateProtocol> delegate;
This means that Class B has a delegate protocol declared and anyone who wants to be its delegate needs to adopt this protocol and the methods defined herein.
So now in your Class A, right on the @interface line, add <YourDelegateProtocol> right after the:
@interface ViewController : UIViewController
And since now Class A implements Class B’s protocol, it must implement the delegate methods, which is only itemWillBePassed in our example.
Now simply, whenever Class B needs to notify Class A, it has to call:
[self itemWillBePassed];
And Class A will know about it in its implemented delegate method!
コメント
コメントを投稿