我正在我的应用程序中实现IIViewDeckController。
当我试图替换IBAccount到那个屏幕时,我会得到一个错误:
初始化器元素不是编译时间常数。
代码的第一部分是我现在拥有的,UIViewController来自我想要用来加载FirstAccountViewController的IIViewDeckController。
-(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];发布于 2012-04-28 20:54:06
您已经在这里声明了全局变量:
UIViewController* leftController =
[[FirstAccountViewController alloc] init];
IIViewDeckController* deckController =
[[IIViewDeckController alloc] initWithCenterViewController:self.centerController leftViewController:leftController rightViewController:rightController];并且您试图在没有上下文的情况下初始化它们(例如,您传递的参数--不应该有全局self)。
这里不需要全局变量,也不能将其声明为全局变量,因为在这个上下文中不能正确初始化它,而且它在C和ObjC中的格式不正确。
我建议在这种情况下使用ivar。
发布于 2012-04-28 20:38:28
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];
}https://stackoverflow.com/questions/10367267
复制相似问题