0
我写了一些代码来隐藏弹出按钮,但按下按钮但它不起作用(没有新增功能)。 我有一个主视图(我将它称为A)与一个按钮里面,按下按钮弹出显示(我将它称为B)。弹出式窗口中有另一个按钮,我想用它来关闭弹出窗口并在A中执行某些操作。换句话说,A是我的主视图,按下按钮我显示一个弹出窗口(B)执行登录(凭据可以是填写)。使用按钮关闭弹出窗口并委托执行
按下登录按钮(弹出窗口中的那个)我调用一个服务来检查凭证,如果用户已通过身份验证,则需要关闭弹出窗口并更新我的主视图(A)。
下面是我的代码
按钮与doLogin动作链接酥料饼的头文件(B)
#import <UIKit/UIKit.h>
@protocol MyPopoverDelegate <NSObject>
- (void) didLoginButton;
@end
@interface login : UIViewController
@property (nonatomic, assign) id<MyPopoverDelegate> delegate;
- (IBAction) doLogin;
@end
酥料饼的实现文件(B)
#import "login.h"
@implementation login
@synthesize delegate;
....
..
- (IBAction) doLogin {
[self.delegate didLoginButton];
}
,它工作正常(在popover内)。我内部有一些逻辑,它运作良好。
主视图头文件(A)
#import <UIKit/UIKit.h>
#import "login.h"
@interface ViewController : UIViewController <UIPopoverControllerDelegate, MyPopoverDelegate> {
UIPopoverController *myPopoverController;
}
@property (nonatomic, retain) UIPopoverController *myPopoverController;
....
..
@end
主视图实现文件(A)
@synthesize delegate;
..
...
- (void) didLoginButton {
if ([myPopoverController isPopoverVisible]) {
NSLog(@"dismiss ok");
[myPopoverController dismissPopoverAnimated:YES];
}
}
....
..
运行我的代码并按下登录按钮形成出现的酥料饼的主视图。按下popover中的按钮什么也没有发生。
基本上,我已经设置到我的主视图文件中的didLoginButton方法永远不会被触发,当然,弹出窗口总是可见的。 我做错了什么?
我使用在我的storybpard中定义的segue显示popover。不知道我该如何设置我的代表,所以......我认为你是对的。我没有在我的B视图(实际上是弹窗视图)中设置委托。 在我的主视图我已经添加的方法prepareForSegue如下 - (无效)prepareForSegue:(UIStoryboardSegue *)赛格瑞发件人:(ID)发送方{ 如果([segue.identifier isEqualToString:@ “登录”]){ ((UIStoryboardPopoverSegue *)segue).popoverController.delegate = self; } } 我检查标识符是否与我在故事板中设置的标识符相同的“登录”。 –
这段代码仍然没有解决问题... –
我不知道它应该如何与故事板一起工作。我不使用故事板。 – Dave