这两个是我创建协议(protocol)然后在另一个类中声明委托(delegate)的文件
这是我最喜欢的ViewController.h
#import <UIKit/UIKit.h>
#import <CoreData/CoreData.h>
#import "ViewController.h"
@class FavouritesTableViewController;
@protocol FavouritesTableViewControllerDelegate<NSObject>
- (void)senDetailsViewController:(FavouritesTableViewController *)controller didFinishEnteringItem:(NSArray *)item;
@end
@interface FavouritesTableViewController : UITableViewController <UISearchControllerDelegate,UISearchBarDelegate>
@property (strong, nonatomic) IBOutlet UISearchController *search;
@property (strong, nonatomic) IBOutlet UITableView *table;
@property (nonatomic, weak) id < FavouritesTableViewControllerDelegate > delegate;
@end
这是我的viewController.h
#import <UIKit/UIKit.h>
#import <CoreLocation/CoreLocation.h>
#import "FavouritesTableViewController.h"
@interface ViewController : UIViewController <CLLocationManagerDelegate,FavouritesTableViewControllerDelegate>
@property (weak, nonatomic) IBOutlet UIImageView *weatherIcon;
@property (weak, nonatomic) IBOutlet UILabel *Place;
@property (weak, nonatomic) IBOutlet UILabel *Temperature;
@property (weak, nonatomic) IBOutlet UILabel *unit;
@property (weak, nonatomic) IBOutlet UILabel *weatherText;
@property (weak, nonatomic) IBOutlet UITextView *Info;
@property (weak, nonatomic) IBOutlet UILabel *summary;
@property (strong,nonatomic) NSString *longitude;
@property (strong,nonatomic) NSString *latitude;
@property (strong,nonatomic) NSString *locationName;
@property BOOL setLocation;
@property (weak, nonatomic) IBOutlet UIScrollView *scroll;
- (IBAction)forecast:(UIButton *)sender;
- (IBAction)Share:(UIButton *)sender;
- (IBAction)history:(UIButton *)sender;
@property (weak, nonatomic) IBOutlet UIActivityIndicatorView *activIndicator;
- (IBAction)favbutton:(id)sender;
@end
我得到的错误是
:- Cannot find protocol declaration for 'FavouritesTableViewControllerDelegate'
我正在声明这些方法和协议(protocol)以将数据从 FavouriteViewController
传递到 ViewController
这是我在 ViewController.m
-(void)senDetailsViewController:(FavouritesTableViewController *)controller didFinishEnteringItem:(NSArray *)item
{
controller.delegate = self;
self.latitude = [item[0] valueForKey:@"lat"];
self.longitude = [item[0] valueForKey:@"long"];
self.locationName = [item[0] valueForKey:@"name"];
self.setLocation = YES;
[self viewDidLoad];
}
最佳答案
这是由于递归导入而发生的,在 FavouritesTableViewController
中,您正在导入 "ViewController.h"
并且再次在 ViewController.h
中导入“FavouritesTableViewController.h
”
尝试
@class viewController;
@class FavouritesTableViewController;
在 FavouritesTableViewController.h
中删除 "#import ViewController.h"
关于ios - 找不到委托(delegate)的协议(protocol)声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35432578/