0

アプリに実装IIViewDeckControllerしています。

IBAccount を置き換えてその画面に移動しようとすると、エラーが発生します。

初期化要素はコンパイル時定数ではありません

コードの最初のセクションは私が今持っているものでUIViewController、オーバーIIViewDeckControllerをロードするために使用したいものですFirstAccountViewController

-(IBAction)account{
    FirstAccountViewController* ab=[[FirstAccountViewController alloc] init];
    [self.navigationController pushViewController:ab animated:YES];
    UIViewController* leftController = [[UIViewController alloc] init]; 
}

UIViewController* leftController = [[FirstAccountViewController alloc] init]; 
IIViewDeckController* deckController =  [[IIViewDeckController alloc] initWithCenterViewController:self.centerController leftViewController:leftController
                                                                           rightViewController:rightController];
4

2 に答える 2

1

ここでグローバル変数を宣言しました:

UIViewController* leftController =
    [[FirstAccountViewController alloc] init]; 
IIViewDeckController* deckController =
    [[IIViewDeckController alloc] initWithCenterViewController:self.centerController leftViewController:leftController rightViewController:rightController];

そして、コンテキストなしでそれらを初期化しようとしています(たとえば、渡すパラメーター- global があってはなりませんself)。

ここではグローバル変数は必要ありません。また、このコンテキストでは適切に初期化できず、C および ObjC では不適切な形式であるため、そのように宣言することはできません。

この場合、ivar を使用することをお勧めします。

于 2012-04-28T20:54:06.197 に答える
0
UIViewController* leftController = [[FirstAccountViewController alloc] init]; 
IIViewDeckController* deckController =  [[IIViewDeckController alloc] initWithCenterViewController:self.centerController leftViewController:leftController rightViewController:rightController];

ええ、それは違います -- 起動時にグローバル変数を初期化したい場合 (ただし、グローバル変数を使用することはまったくお勧めしません)、初期化関数を使用する必要があります。

UIViewController *leftController;
IIViewDeckController *deckController;

__attribute__((constructor))
void __init()
{
    leftController = [[FirstAccountViewController alloc] init]; 
    deckController =  [[IIViewDeckController alloc] initWithCenterViewController:self.centerController leftViewController:leftController rightViewController:rightController];

}
于 2012-04-28T20:38:28.180 に答える