ios - 找不到委托(delegate)的协议(protocol)声明

标签 ios objective-c

这两个是我创建协议(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

中调用的协议(protocol)方法
-(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/

相关文章:

ios - 创建新的 PhoneGap 项目报错

objective-c - xib vs iPhone : distorted,重叠对象

ios - 在NSString中发布两个键值对

ios - 如何在 iOS 9 中获取堆叠的 UITextFields

objective-c - 为 NavBar 的标题添加阴影

objective-c - 在 [NSURLConnection sendSynchronousRequest :theRequest returningResponse:nil error:nil] 中获取泄漏

ios - 如何创建和使用我自己的 .plist 文件

ios - 从各种乐器的 MIDI 音符生成音频文件

ios - 使用 `moveRowAtIndexPath:toIndexPath:` 和 `estimatedRowHeight` 时 `UITableViewAutomaticDimension` 中的 UITableViewCell 动画错误

objective-c - 如何在类里面要求 ARC?