gpt4 book ai didi

objective-c - 了解自定义委托(delegate)

转载 作者:行者123 更新时间:2023-12-01 19:27:15 25 4
gpt4 key购买 nike

所以我有一个应用程序,在应用程序中有一个 tableView , 我有一个 uinavigationbarbutton表示模态viewController .当用户在模态界面中点击 go 按钮时,我希望它关闭模态视图并在模态视图中获取一些信息。我会将这些信息放在 tableView 中。为此,我编写了一个自定义委托(delegate),但它不起作用。我在下面包含了我的代码。谢谢你的帮助。

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

新项目 View Controller .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"];
}

我在 go 按钮和 tableview 中委托(delegate)的实现中都放了一个日志,但只调用了 go 日志。

谢谢

最佳答案

在您发布的代码中,您没有设置委托(delegate)。您需要将其设置为类似于 detailView.delegate = self , 否则为 nil .您可以向 nil 发送消息-object 没有任何警告和错误,什么都不会发生。

关于objective-c - 了解自定义委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6448179/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com