所以我有一个应用程序,在应用程序中有一个tableView
,我有uinavigationbarbutton
呈现模式viewController
。当用户点击模态界面中的go按钮时,我想要它取消模态视图并获取模态视图中的一些信息。我将把这些信息放在tableView中。为此,我编写了一个自定义委托,但它不起作用。我在下面提供了我的代码。谢谢你的帮助。
TrackerMainViewController.h // tableView
#import "NewItemViewController.h"
@interface TrackerMainViewController : UITableViewController <UITableViewDelegate, DetailDelegate>
TrackerMainViewController.m
-(void)finishedAddingFoodItemFromDetail:(NSDate *)date whatWasEaten:(NSString *)whatFood whichMeal:(NSString *)meal {
NSLog(@"in delegate method here");
[self.tableView reloadData];
[self dismissModalViewControllerAnimated:YES];
}
NewItemViewController.h //模态视图
@protocol DetailDelegate <NSObject>
-(void)finishedAddingFoodItemFromDetail:(NSDate *)date whatWasEaten:(NSString *)whatFood whichMeal:(NSString *)meal;
@end
@interface NewItemViewController : UIViewController {
id <DetailDelegate> _delegate;
}
@property (nonatomic, retain) id <DetailDelegate> delegate;
@end
NewItemViewController.h
@implementation NewItemViewController
@synthesize delegate = _delegate;
//the go button in the modal view
- (IBAction)Go:(id)sender {
[self.delegate finishedAddingFoodItemFromDetail:[NSDate date] whatWasEaten:@"chicken" whichMeal:@"breakfast"];
}
我在goview按钮和tableview中的委托实现中都有一个日志,但只调用了go日志。
由于
答案 0 :(得分:3)
在您发布的代码中,您没有设置委托。您需要将其设置为与此detailView.delegate = self
类似,否则为nil
。您可以在没有任何警告和错误的情况下向nil
- 对象发送消息,不会发生任何事情。