我有两个视图控制器,
HomeViewController
和
AddViewController
.
家庭视图控制器
是的代表
添加视图控制器
.
问题是当我按下
添加视图控制器
,对委托的调用似乎没有执行。有症状的是,“取消”按钮的行为就像它甚至没有连接一样。在编程上,断点似乎表明控件离开
cancelButton
方法,但从未达到
addViewControllerDidCancel
.
我相信一切都连接正确,下面是相关代码:
从AddViewController.h:
#import <UIKit/UIKit.h>
#import "WMDGCategory.h"
#import "WMDGActivity.h"
@class HomeViewController;
@protocol AddViewControllerDelegate <NSObject>
-(void) addViewControllerDidSave;
-(void) addViewControllerDidCancel:(WMDGActivity *) activityToDelete;
@end
@interface AddViewController : UIViewController <UIPickerViewDataSource,UIPickerViewDelegate>
@property (nonatomic, weak) id <AddViewControllerDelegate> delegate;
从HomeViewController.h:
@interface HomeViewController : UITableViewController <UITableViewDataSource,UITableViewDelegate,AddViewControllerDelegate>
从HomeViewController.m:
-(void) addViewControllerDidSave
{
NSManagedObjectContext *localContext = [NSManagedObjectContext MR_contextForCurrentThread];
[localContext MR_saveToPersistentStoreAndWait];
[self.navigationController dismissViewControllerAnimated:YES completion:nil];
[self refreshData];
}
-(void) addViewControllerDidCancel:(WMDGActivity *) activityToDelete
{
[activityToDelete MR_deleteEntity];
[self.navigationController dismissViewControllerAnimated:YES completion:nil];
[self refreshData];
}
从AddViewController.m:
- (IBAction)cancelButton:(UIBarButtonItem *)sender
{
[self.delegate addViewControllerDidCancel:self.thisActivity];
}
有人能发现我的错误吗?
谢谢
根据以下答案1进行编辑:
实际上,我在HomeViewController中的prepareFroSegue方法中这样做了:
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
NSManagedObjectContext *localContext = [NSManagedObjectContext MR_contextForCurrentThread];
if ([[segue identifier] isEqualToString:@"addModal"])
{
UINavigationController *navController = (UINavigationController *)segue.destinationViewController;
AddViewController *avc = (AddViewController *)navController.topViewController;
avc.delegate = self;
WMDGActivity *addedActivity = (WMDGActivity *)[WMDGActivity MR_createInContext:localContext];
avc.thisActivity = addedActivity;
}
}