Ios 向新控制器添加新委托时出现问题

Ios 向新控制器添加新委托时出现问题,ios,objective-c,Ios,Objective C,我正在尝试找出如何在LocationViewController和SetCorringTableViewController中获取代理,并在GameDetailsTableViewController中实现这两个代理。LocationViewControllerDelegate已在工作,但当我添加新的SetCoringTableViewController时,程序出现错误 LocationViewController.h #import "ViewController.h" @class Lo

我正在尝试找出如何在LocationViewController和SetCorringTableViewController中获取代理,并在GameDetailsTableViewController中实现这两个代理。LocationViewControllerDelegate已在工作,但当我添加新的SetCoringTableViewController时,程序出现错误

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
#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
#import <UIKit/UIKit.h>
#import "LocationViewController.h"
#import "SetScoringTableViewController.h"

@interface MainViewController : UITableViewController  <LocationViewControllerDelegate, SetScoringTableViewControllerDelegate>
#import "GameDetailsTableViewController.h"
#import "SetScoringTableViewController.h"
设置CorringTableViewController.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
#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
#import <UIKit/UIKit.h>
#import "LocationViewController.h"
#import "SetScoringTableViewController.h"

@interface MainViewController : UITableViewController  <LocationViewControllerDelegate, SetScoringTableViewControllerDelegate>
#import "GameDetailsTableViewController.h"
#import "SetScoringTableViewController.h"
gamedetailstablevewcontroller.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
#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
#import <UIKit/UIKit.h>
#import "LocationViewController.h"
#import "SetScoringTableViewController.h"

@interface MainViewController : UITableViewController  <LocationViewControllerDelegate, SetScoringTableViewControllerDelegate>
#import "GameDetailsTableViewController.h"
#import "SetScoringTableViewController.h"
运行此操作时,我遇到一个错误:无法找到“SetCoringTableViewControllerDelegate”的协议声明,即使我已经找到了。
我发现解决此问题的唯一方法是将SetCoringTableViewController委托放在LocationView控制器中,但我知道这是不对的。任何帮助都将不胜感激。

尝试在不同的.h文件中分离该委托。

尝试在不同的.h文件中分离该委托。

您有一个依赖项循环:

设置CorringTableViewController.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
#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
#import <UIKit/UIKit.h>
#import "LocationViewController.h"
#import "SetScoringTableViewController.h"

@interface MainViewController : UITableViewController  <LocationViewControllerDelegate, SetScoringTableViewControllerDelegate>
#import "GameDetailsTableViewController.h"
#import "SetScoringTableViewController.h"
gamedetailstablevewcontroller.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
#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
#import <UIKit/UIKit.h>
#import "LocationViewController.h"
#import "SetScoringTableViewController.h"

@interface MainViewController : UITableViewController  <LocationViewControllerDelegate, SetScoringTableViewControllerDelegate>
#import "GameDetailsTableViewController.h"
#import "SetScoringTableViewController.h"

但是看起来您可以删除导入GameDetailsStableViewController.h,因为头文件中没有提到它。

您有一个依赖循环:

设置CorringTableViewController.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
#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
#import <UIKit/UIKit.h>
#import "LocationViewController.h"
#import "SetScoringTableViewController.h"

@interface MainViewController : UITableViewController  <LocationViewControllerDelegate, SetScoringTableViewControllerDelegate>
#import "GameDetailsTableViewController.h"
#import "SetScoringTableViewController.h"
gamedetailstablevewcontroller.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
#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
#import <UIKit/UIKit.h>
#import "LocationViewController.h"
#import "SetScoringTableViewController.h"

@interface MainViewController : UITableViewController  <LocationViewControllerDelegate, SetScoringTableViewControllerDelegate>
#import "GameDetailsTableViewController.h"
#import "SetScoringTableViewController.h"

但是看起来您可以删除导入GameDetailsStableViewController.h,因为头文件中没有提到它。

您正在经历的是一个导入周期。打破导入循环 删除此导入行:

#import "GameDetailsTableViewController.h"

从SetCoringTableViewController.h中,将其放入.m文件中。

您所经历的是一个导入周期。打破导入循环 删除此导入行:

#import "GameDetailsTableViewController.h"
从SetScoringTableViewController.h,并将其放入.m文件中