2010-07-16 26 views
0

我收到編譯器錯誤,當我嘗試構建下面的代碼。它是一個簡單的視圖(UntitledViewController),它帶有一個帶有欄按鈕項的導航欄,該按鈕項調用showPopUp,該視圖創建並顯示彈出窗口和我的其他視圖(popoverview)。「預計」:'之前'。'令牌「當試圖解僱UIPopover

Popoverview有一個按鈕,它調用hidePopOver其即時通訊設法使近彈出,但我得到這個編譯器錯誤:

"expected ':' before '.' token" 

在這條線:

[UntitledViewController.popOver dismissPopoverAnimated:YES]; 

如果我註釋掉這行代碼或者把它放在NSLog中,它可以正常工作

UntitledViewController

/*--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

/*--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") 
} 

回答

1

UntitledViewController是一個類。如果你想訪問一個屬性,你需要一個實例

UntitledViewController * vc = [ UntitledViewController new ]; 

然後你就可以在實例訪問屬性:

vc.popOver 

的Objective-C不支持類變量,也不是類屬性。

1

由於 「dismissPopoverAnimated:」 是一個實例方法,你需要做的是這樣的:

[self.popOver dismissPopoverAnimated:YES]; 
0

你需要創建一個實例的UntitledViewController之前,您可以訪問其屬性。

UntitledViewController* myInstance = [[UntitledViewController alloc] init]; 
[myInstance.popOver dismissPopoverAnimated:YES]; 
0

您正試圖訪問類UntitledViewController的popOver屬性。類沒有屬性或實例變量。你需要一個UntitledViewController類的實例。

所以你需要添加一個UntitledViewController實例到popoverview並使用它。

0

你還沒有在你的popoverview類中聲明UntitledViewController

如果要從popoverview類中隱藏該特定彈出窗口,則需要引用具有該特定popOverUntitledViewController實例。另外:處理你的命名約定。

0

在這一行:

[UntitledViewController.popOver dismissPopoverAnimated:YES]; 

你引用的UntitledViewController,而不是一個實例類