0

当我尝试构建以下代码时出现编译器错误。它是一个简单的视图 (UntitledViewController),它有一个带有条形按钮项目的导航栏,它调用showPopUp创建并显示一个弹出窗口以及我的其他视图 (popoverview)。

Popoverview有一个按钮,它调用hidePopOver我试图关闭弹出窗口,但我得到这个编译器错误:

"expected ':' before '.' token"

在这条线上:

[UntitledViewController.popOver dismissPopoverAnimated:YES];

如果我注释掉这行代码或放一个 NSLog 它工作正常

无标题视图控制器

/*--UntitledViewController.h--*/

#import <UIKit/UIKit.h>

@interface UntitledViewController : UIViewController {
    UIPopoverController *popOver;
    IBOutlet UIBarButtonItem *popOverbutton;
}

@property (nonatomic, retain) UIPopoverController *popOver;
@property (nonatomic, retain) IBOutlet UIBarButtonItem *popOverbutton;

-(IBAction)showPopUp;

@end


/*--UntitledViewController.m--*/

#import "UntitledViewController.h"
#import "popoverview.h"

@implementation UntitledViewController
@synthesize popOverbutton, popOver;

-(IBAction)showPopUp {
      popoverview *popView = [[popoverview alloc] initWithNibName:@"popoverview" bundle:nil];
      popOver = [[UIPopoverController alloc] initWithContentViewController:popView];
      [popOver presentPopoverFromBarButtonItem:popOverbutton permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
 }
 ...

弹出概览

/*--popoverview.h--*/   

#import <UIKit/UIKit.h>

@interface popoverview : UIViewController {

}
-(IBAction)hidePopOver;
@end


/*--popoverview.m--*/

#import "popoverview.h"
#import "UntitledViewController.h"

@implementation popoverview
-(IBAction)hidePopOver {
    [UntitledViewController.popOver dismissPopoverAnimated:YES]; (ERROR "expected ':' before '.' token")
}
4

6 回答 6

1

由于 "dismissPopoverAnimated:" 是一个实例方法,因此您需要执行以下操作:

[self.popOver dismissPopoverAnimated:YES];
于 2010-07-16T15:27:40.243 回答
1

UntitledViewController 是一个类。如果要访问属性,则需要一个实例。

UntitledViewController * vc = [ UntitledViewController new ];

然后您可以访问实例上的属性:

vc.popOver

Objective-C 不支持类变量,也不支持类属性。

于 2010-07-16T15:29:10.437 回答
0

您需要先创建一个 UntitledViewController 实例,然后才能访问它的属性。

UntitledViewController* myInstance = [[UntitledViewController alloc] init];
[myInstance.popOver dismissPopoverAnimated:YES];
于 2010-07-16T15:27:51.713 回答
0

您正在尝试访问 UntitledViewController 类的 popOver 属性。类没有属性或实例变量。您需要一个 UntitledViewController 类的实例。

因此,您需要向 popoverview 添加一个 UntitledViewController 实例并使用它。

于 2010-07-16T15:27:53.207 回答
0

你还没有UntitledViewController在你的 popoverview课堂上声明。

如果要从popoverview类中隐藏特定的 popOver,则需要引用UntitledViewController具有该特定popOver.

另外:处理您的命名约定。

于 2010-07-16T15:28:00.580 回答
0

在这一行:

[UntitledViewController.popOver dismissPopoverAnimated:YES];

您引用的是class UntitledViewController,而不是该类的实例

于 2010-07-16T15:28:08.240 回答