我正在尝试制作一个自定义协议,希望有人可以提供帮助。
我有一个带有标签的 mainViewController (mainVC)。当我按下 edwwVC 中的按钮时,该标签需要用字符串更新。
我正在使用 ARC 和故事板。
问题是当我按下 edwwVC 上的完成按钮时,调用了“完成”方法,但在 mainVC 中没有调用委托方法。然而,如果我通过 mainVC 调用 done 方法,则调用 done 方法和委托方法。所以我可以看到连接在那里,我只是不明白为什么当我按下 edwwVC 中的完成按钮时没有调用委托方法。
我想这与 edwwVC 的初始化有关。因为它已经由情节提要启动了,所以在我看来,好像我在 mainVC 的 viewDidLoad 方法中再次对其进行了初始化。但这就是我得到的:)
提前致谢!
edwwVC.h
#import <UIKit/UIKit.h>
#import "IIViewDeckController.h"
@class EDWWViewController;
@protocol EDWWViewControllerDelegate <NSObject>;
@optional
- (void)edwwVCDidFinish:(EDWWViewController *)edwwVC;
@end
@interface EDWWViewController : UIViewController <IIViewDeckControllerDelegate> {
__weak id<EDWWViewControllerDelegate> delegate;
NSMutableArray *edwwPoints;
}
@property (weak) id<EDWWViewControllerDelegate> delegate;
@property (weak, nonatomic) IBOutlet UITableView *theTableView;
@property (strong, nonatomic) NSString *testString;
- (IBAction)done:(id)sender;
- (IBAction)add:(id)sender;
@end
edwwVC.m:
#pragma mark - delegate method
- (IBAction)done:(id)sender {
testString = @"This is the test string!";
[delegate edwwVCDidFinish:self];
[self.viewDeckController closeRightViewAnimated:YES];
NSLog(@"Done pressed");
}
MainVC.m:
- (void)viewDidLoad
{
[super viewDidLoad];
edwwViewController = [[EDWWViewController alloc] init];
edwwViewController.delegate = self;
}
- (void)edwwVCDidFinish:(EDWWViewController *)edwwVC {
edwwLabel.text= edwwVC.testString;
NSLog(@"delegate method called");
}