我试图找出如何在LocationViewController和SetScoringTableViewController中获取委托,并在GameDetailsTableViewController中实现它们。 LocationViewControllerDelegate已经工作,但是当我添加新的SetScoringTableViewController时,程序出错了。
LocationViewController.h
#import "ViewController.h"
@class LocationViewController;
@protocol LocationViewControllerDelegate <NSObject>
- (void)addItemViewController:(LocationViewController *)controller didFinishEnteringItem:(NSString *)name;
@end
@interface LocationViewController : UIViewController
@property (nonatomic, weak) id <LocationViewControllerDelegate> delegate;
@end
SetScoringTableViewController.h
#import <UIKit/UIKit.h>
#import "GameDetailsTableViewController.h"
#import "LocationViewController.h"
@class SetScoringTableViewController;
@protocol SetScoringTableViewControllerDelegate <NSObject>
- (void)addItemViewControllerSS:(SetScoringTableViewController *)SScontroller didFinishEnteringItemSS:(NSString *)SSname;
@end
@interface SetScoringTableViewController : UITableViewController
@property (nonatomic, strong) id <SetScoringTableViewControllerDelegate> SSdelegate;
@end
GameDetailsTableViewController.h
#import <UIKit/UIKit.h>
#import "LocationViewController.h"
#import "SetScoringTableViewController.h"
@interface MainViewController : UITableViewController <LocationViewControllerDelegate, SetScoringTableViewControllerDelegate>
当我运行这个时,我收到一个错误:“找不到'SetScoringTableViewControllerDelegate'的协议声明,即使我有。 我找到解决这个问题的唯一方法是将“SetScoringTableViewController委托放在LocationView控制器中,但我知道这是不对的。任何帮助将不胜感激。
答案 0 :(得分:4)
你有一个依赖循环:
SetScoringTableViewController.h
#import "GameDetailsTableViewController.h"
GameDetailsTableViewController.h
#import "SetScoringTableViewController.h"
但看起来您可以删除#import "GameDetailsTableViewController.h"
,因为在头文件中没有提及它。
答案 1 :(得分:2)
您遇到的是一个#import cycle
。打破导入循环
删除此导入行:
#import "GameDetailsTableViewController.h"
来自SetScoringTableViewController.h
并将其放入.m
文件中。
答案 2 :(得分:0)
尝试在不同的.h文件中分隔委托。