objective-c - 初始化程序元素不是编译时常量错误

我正在将 IIViewDeckController 实现到我的应用程序中。

当我尝试替换IBAccount进入该屏幕时,出现错误:

Initializer element is not a compile time constant



代码的第一部分是我现在所拥有的,UIViewController来自我想用来加载IIViewDeckControllerFirstAccountViewController
-(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];

最佳答案

您已在此处声明了全局变量:

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

并且您尝试在没有上下文的情况下初始化它们(例如,您传递的参数-应该没有全局self)。

您不想在这里使用全局变量,也不能这样声明全局变量,因为在这种情况下无法正确初始化它,并且由于它在C和ObjC中格式不正确。

我建议在这种情况下使用ivar。

https://stackoverflow.com/questions/10367267/

相关文章:

scala - 为什么在 Scala 中压缩比 zip 快?

iphone - 在编译应用程序时遇到这样的错误

visual-c++ - 升级项目:operator '=' is ambiguous and 'i

android - Maven不会因引入的编译错误而失败

compilation - 在我的编译器中完全可以正常工作,但在将其提交到在线社区时会出现编译错误

visual-studio-2010 - MS VS 2010 srand()无法编译?

c# - 为什么尝试在WPF/C#中注册所有事件时出现构建错误?

database - 为Windows和Linux编译64位sqlite

ant - 如何在不使用 IDE(Netbeans 等)的情况下使用外部库编译 java 文件?

gcc - 使用arm-linux-gcc编译STLPort时发生未知错误