我试图使用委托将数据从viewA
转发到viewB
。我试图使用代理的原因是viewB
是一个滑出式菜单 - 我正在使用此函数的SWRevealViewController
库。但作为副作用 - prepareForSegue
不从viewA
调用,因为它不拥有viewB
。使用委托协议向前传递数据
因此,代表们似乎是前进的方向。
问题是我的委托方法没有被调用。
在viewB
- 我添加了一个方法,当平移手势发生时被调用 - 打开侧面菜单。
所以这是我做过什么:
在viewA
我宣布的协议:
@protocol firstViewControllerDelegate <NSObject>
(void)sendData:(NSString *)string;
@end
宣布它像这样在viewA
@property (nonatomic, assign) id <firstViewControllerDelegate> delegate;
然后在锅里手势viewA
-void)panGestureStarted:(UIPanGestureRecognizer *)gesture{
if (gesture.state == UIGestureRecognizerStateBegan){
NSString *dataToPass = @"Test sending data to second view";
[self.delegate sendData:dataToPass];
}
然后在viewB
:
#import "viewAController.h"
顺应了协议
@interface BBFilterViewController : UIViewController < firstViewControllerDelegate>
然后在viewB.m
- (void)viewDidLoad{
[super viewDidLoad];
ViewAViewController *viewA = [[ViewAViewController alloc] init];
viewA.delegate = self;}
-(void)sendData:(NSString *)string{
NSLog(@"Data from viewA %@",string);}
的问题是在viewB
.M的方法:-(void)sendData:(NSString *)string
不会被调用。我在这里做错了什么?
感谢您的帮助。我如何找到现有的实例?由于viewAviewController不是前视图控制器 - 我的UITabBarController就像我希望菜单出现时整个tabbar移动屏幕一样。 – Tander
那么'viewA'在哪里?最有可能你应该改变,以便viewA'将自己设置为'viewB'的委托或者只是一起移除委托(只需要'viewA'直接调用'viewB',因为'viewB'总是在视图中的相同位置控制器层次结构 – Wain
viewA是我的UITabBarController的第二个选项卡viewA永远不会调用viewB它有self.revealViewController平移手势添加到它以便它揭示viewB我不确定viewB是viewA旁边我该如何检查?(还是iOS编程的新手,对于新手问题感到抱歉) – Tander