«ожидается»: «до».токен "При попытке уволить UIPopover - PullRequest
0 голосов
/ 16 июля 2010

Я получаю ошибку компилятора, когда пытаюсь создать следующий код. Это простое представление (UntitledViewController), в котором есть панель навигации с элементом кнопки панели, который вызывает showPopUp , который создает и отображает всплывающее окно с другим видом (popoverview).

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

Ответы [ 6 ]

1 голос
/ 16 июля 2010

UntitledViewController - это класс. Вам нужен экземпляр , если вы хотите получить доступ к свойству.

UntitledViewController * vc = [ UntitledViewController new ];

Затем вы можете получить доступ к свойству в экземпляре:

vc.popOver

Objective-C не поддерживает ни переменные класса, ни свойства класса.

1 голос
/ 16 июля 2010

Поскольку "dismissPopoverAnimated:" является методом экземпляра, вам необходимо выполнить что-то вроде:

[self.popOver dismissPopoverAnimated:YES];
0 голосов
/ 16 июля 2010

В этой строке:

[UntitledViewController.popOver dismissPopoverAnimated:YES];

Вы ссылаетесь на класс UntitledViewController, а не на экземпляр этого класса.

0 голосов
/ 16 июля 2010

вы не объявили UntitledViewController в вашем popoverview классе.

Если вы хотите скрыть этот конкретный popOver из класса popoverview, вам необходимо иметь ссылку на экземпляр UntitledViewController, который имеет этот конкретный popOver.

В сторону: работайте над соглашениями об именах.

0 голосов
/ 16 июля 2010

Вы пытаетесь получить доступ к свойству popOver класса UntitledViewController. Классы не имеют свойств или переменных экземпляра. Вам нужен экземпляр класса UntitledViewController.

Так что вам нужно добавить экземпляр UntitledViewController в popoverview и использовать его.

0 голосов
/ 16 июля 2010

Вам необходимо создать экземпляр UntitledViewController, прежде чем вы сможете получить доступ к его свойствам.

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