presentModalViewController不能在设备上运行iOs 4.0.1 jailbroken

时间:2012-03-21 10:48:42

标签: objective-c ios

我正在尝试提供一个modelViewController,它在iOs 5设备和模拟器上运行完美,在iOs 4.3模拟器上,但它不适用于iOs 4.0.1 jailbroken设备。 我尝试调试我的代码,viewController初始化但是方法viewWillAppear没有在iOs 4.0.1 jailbroken的设备上调用。它正在所有其他设备上调用。 这是我的代码

loadingView=[[UpdatingVc alloc]initWithVar:var1 andVars:var2 andVarz:var3]; 
[self presentModalViewController:loadingView animated:YES];

出于安全原因,我使用主varNames隐藏了原始var名称。 init方法是:

-(id)initWithVar:(NSString*)var andVars:(NSString *)vor andVarz:(NSString *)vers{
self = [super initWithNibName:@"UpdatingVc" bundle:[NSBundle mainBundle]];
if(self) //good practice to check first
{ 
   _a=var;
   _b=vor;
   _c=vers;
} 
return self;
}

谢谢

2 个答案:

答案 0 :(得分:1)

我相信你的init方法应该是

-(id)initWithVar:(NSString*)var andVars:(NSString *)vor andVarz:(NSString *)vers{
self = [super initWithNibName:@"UpdatingVc" bundle:[NSBundle mainBundle]];
if(self) //good practice to check first
{ 
   _a=var;
   _b=vor;
   _c=vers;
} 
return self;
}

注意super = init方法前面的self = part,你需要在init方法中设置self的值。

希望这有帮助!

答案 1 :(得分:0)

我发现了问题,我在方法viewDidAppear中提出了ModalViewController, 所以解决方法是创建一个方法: - (void)更新并在此方法内部放置呈现modalViewController的代码,然后在viewDidAppear中为此方法添加一个选择器,而不是立即调用它。 所以我的代码现在是

-(void) viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];

    [self performSelector:@selector(update) withObject:nil afterDelay:1];
}
-(void)update{
   loadingView=[[UpdatingVc alloc]initWithVar:var1 andVars:var2 andVarz:var3]; 
   [self presentModalViewController:loadingView animated:YES];
}

请注意,此问题仅发生在设备上的iOs 4中,而不是发生在使用iOs 4.0的模拟器上