0

我写了一些代码来隐藏按下按钮的弹出窗口,但是......它不起作用(没有什么新东西)。我有一个主视图(我称之为 A),里面有一个按钮,按下按钮会显示一个弹出框(我称之为 B)。弹出框有另一个按钮,我想用它来关闭弹出框并在 A 中执行某些操作。换句话说,A 是我的主视图,按下按钮我显示弹出框 (B) 以执行登录(可以填写凭据在)。

按下登录按钮(弹出窗口中的那个)我调用一个服务来检查凭据,如果用户通过身份验证,我想关闭弹出窗口并更新我的主视图(A)。

下面是我的代码

Popover 头文件 (B)

#import <UIKit/UIKit.h>
@protocol MyPopoverDelegate <NSObject>
    - (void) didLoginButton;
@end

@interface login : UIViewController
@property (nonatomic, assign) id<MyPopoverDelegate> delegate;

- (IBAction) doLogin;

@end

Popover 实现文件(B)

#import "login.h"
@implementation login
@synthesize delegate;

....
..

- (IBAction) doLogin {
   [self.delegate didLoginButton];
}

该按钮与 doLogin 操作链接,并且工作正常(在弹出框内)。我里面有一些逻辑,它运作良好。

主视图头文件(一)

#import <UIKit/UIKit.h>
#import "login.h"

@interface ViewController : UIViewController <UIPopoverControllerDelegate, MyPopoverDelegate> {
   UIPopoverController *myPopoverController;
}

@property (nonatomic, retain) UIPopoverController *myPopoverController;
....
..

@end

主视图实现文件(一)

@synthesize delegate;
..
...

- (void) didLoginButton {
    if ([myPopoverController isPopoverVisible]) {
         NSLog(@"dismiss ok");

         [myPopoverController dismissPopoverAnimated:YES];
     }
}

....
..

运行我的代码并在弹出窗口出现的主视图中按下登录按钮。按下弹出框内的按钮没有任何反应。

基本上,我在主视图文件中设置的 didLoginButton 方法永远不会被触发,当然,弹出框总是可见的。我做错了什么?

4

1 回答 1

1

设置委托

 BViewController.delegate = mainAViewController; //or self

在呈现弹出框之前。如果这不是您的问题,请提供您的 B 创建和演示中的一些代码。

于 2012-11-23T15:12:47.017 回答