在Xcode中的viewControllers之间切换
问题描述:
我在写一个启动画面。启动画面将连接到服务器并接收一些数据。当数据成功接收后,我想以编程方式转到下一个viewcontrller。我怎样才能做到这一点?它与按钮点击不一样?因为即使将代码放入我的LoadingViewContrller的viewDidLoad中,我也不会转发到下一个屏幕。在Xcode中的viewControllers之间切换
TableViewController *tvc = [[TableViewController alloc] init];
tvc.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self presentModalViewController:tvc animated:NO];
我希望在检索完所有数据后自动跳转到TableViewContrller。
以下是我从网络中检索数据时的代码。
- (void)fetchedData:(NSData *)responseData {
if(responseData == nil){
[ErrorViewController showError];
}else{
//methods to start parsing and adding json into array
if(delegate){
[delegate jsonReceivedData:array];
//codes to go to next screen should be here
}
}
答
好的,这样做很简单。使您的应用的第一个屏幕与启动屏幕相同。声明并实例一个NSTimer,可能在viewWillAppear中,像这样:
mainTimer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(updateTime) userInfo:nil repeats:YES];
然后实例化一个BOOL:
- (void)fetchedData:(NSData *)responseData {
if(responseData == nil){
[ErrorViewController showError];
}else{
//methods to start parsing and adding json into array
if(delegate){
[delegate jsonReceivedData:array];
myBool = YES;
}
}
在你的计时器访问的方法(在这种情况下,“更新时间”),请执行下列操作:
-(void)updateTime{
if(myBool){
[mainTimer invalidate];
MyViewController *vC = [[MyViewController alloc] init];
//pass vC information, now that it has been initialized
//or pass information to a singleton, from which vC can retrieve it
// (I can show you how to do that, too, if need be)
//I will assume you are using a navigationController
[self.navigationController pushViewController:vC animated:YES];
}
}
对于空间的缘故,我要离开了的mainTimer
和myBool
的声明。
+0
假设“启动画面”是指应用程序的初始屏幕。 – AMayes 2012-04-12 15:24:25
您是否有办法检查所有数据何时被检索?如果是这样,请发布该代码,我会告诉你如何去做。 – AMayes 2012-04-11 15:54:05
@Amayes我编辑了代码 – Hexark 2012-04-12 01:47:09