我有两个班级A
和B
。我有一次删除操作将变量从A
传递到B
。我尝试让另一位代表从B
转到A
,以便我可以从A
控制B
。我试图创建另一个委托,但它不起作用。由于我已经在B.h中导入A.h,我无法在A.h.中导入B.h.我该怎么做才能设置两种方式自定义委托?
A.H
@protocol SoundDetectDelegate <NSObject>
-(void)update_from_sound: (SKSpriteNode*) node;
@end
@interface SoundDetect : NSObject
@property (nonatomic, weak) id <SoundDetectDelegate> delegate;
+ (id)sharedInstance;
-(void)beat;
@end
B.h
@interface HelloScene : SKScene <SoundDetectDelegate>
@property(nonatomic, strong) SoundDetect* sd;
@property(nonatomic, strong)Song* song;
@end
这是一种代表方式。
我试图在B.h中找到类似的东西:
@protocol SceneDelegate <NSObject>
-(void)cancel_thread;
@end
@interface HelloScene : SKScene <SoundDetectDelegate>
@property(nonatomic, strong) SoundDetect* sd;
@property(nonatomic, strong)Song* song;
@end
但是我在A.h。
中没有@interface SoundDetect : NSObject <SceneDelegate>
将变量从B
传递到A
的主要目的是我想将变量发送到A
,以便A
可以取消其当前线程。
由于
答案 0 :(得分:1)
您不必使用委托,而是使用返回类型为BOOL的块来通知是否应该取消它。
答案 1 :(得分:0)
1 - 为了将数据从A传递到B你可以使用Segue,当它的委托被调用时,你可以像这样将数据从A传递到B
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if([segue.identifier isEqualToString:@"segueFromFirstToSecond"])
{
UINavigationController *navController = (UINavigationController *)segue.destinationViewController;
SecondViewController *controller = (SecondViewController *)navController.topViewController;
controller.myValue = YES; /// myvalue is property in secondViewCOntroller
}
}
2 - 为了将数据从B传递到A,您可以按照这些链接
http://www.mysamplecode.com/2012/12/ios-passing-data-between-view-controllers.html
http://tomsbigbox.com/pass-data-from-modal-view-back-to-parent-in-the-ios-sdk/
答案 2 :(得分:0)
解决方案 - 不要在.h中导入.m中的导入为.h中的引用引入前向声明@ class / @ protocol
在.m中的- 具有以下类别。 @interface SoundDetect() @end
A.H
@protocol SoundDetectDelegate <NSObject>
-(void)update_from_sound: (SKSpriteNode*) node;
@end
@interface SoundDetect : NSObject
@property (nonatomic, weak) id <SoundDetectDelegate> delegate;
+ (id)sharedInstance;
-(void)beat;
@end
B.h
@class SoundDetect;
@interface HelloScene : SKScene
@property(nonatomic, strong) SoundDetect* sd;
@property(nonatomic, strong)Song* song;
@end
B.m
#import "SoundDetect.h"
@interface HelloScene()<SoundDetectDelegate>
@end
@implementation HelloScene
-(void)update_from_sound: (id) node
{
}
@end