0

我已经在有菜单的地方申请了。单击菜单按钮时,它将转到相应的视图控制器。

今天我添加了 newviewcontroller,其中我有来自在线服务器的数据,我在 UITableView 中显示这些数据。

但是奇怪的是,当我单击按钮时,它会挂起一段时间(在此挂起时间,它会获取 newviewcontroller 的所有数据)然后打开 newviewcontroller。

注意:为了获取数据,我在 newviewcontroller 中有所有代码。

知道为什么会这样吗?


为了获取数据,我的代码与下面的链接完全相同。

http://www.appcoda.com/ios-programming-rss-reader-tutorial/

从第一个视图控制器到 newviewcontroller,下面是我的代码。

DoctorsListViewController *secondView = [self.storyboard instantiateViewControllerWithIdentifier:@"doctorsen"];
secondView.myMainURL = @"my url here";
[self.navigationController pushViewController:secondView animated:YES];

以下是我在 newviewcontroller (doctorlistviewcontroller) 的 viewDidLoad 中的内容

startNumberLabel.text = @"0";
typeNumber = @"0";

feeds = [[NSMutableArray alloc] init];
NSString *myTMainURL = [NSString stringWithFormat:@"%@?type=%@&index=%@", myMainURL, typeNumber, startNumberLabel.text];
NSURL *url = [NSURL URLWithString:myTMainURL];
parser = [[NSXMLParser alloc] initWithContentsOfURL:url];
[parser setDelegate:self];
[parser setShouldResolveExternalEntities:NO];
[parser parse];
4

1 回答 1

4

根据链接中的示例

    startNumberLabel.text = @"0";
typeNumber = @"0";

feeds = [[NSMutableArray alloc] init];
NSString *myTMainURL = [NSString stringWithFormat:@"%@?type=%@&index=%@", myMainURL, typeNumber, startNumberLabel.text];
NSURL *url = [NSURL URLWithString:myTMainURL];
parser = [[NSXMLParser alloc] initWithContentsOfURL:url];
[parser setDelegate:self];
[parser setShouldResolveExternalEntities:NO];
[parser parse];

你有同步加载的数据,这就是 viewController 需要时间来加载的原因,并且在它加载了所有数据之后,它会被加载和显示。

因此,您可以异步或在一个线程中下载所有数据,然后在数据下载和解析之后;更新视图或重新加载 tableView(如果使用)

这是异步下载数据的链接

完成后实施以下之一

1)苹果的可达性

2) Tony Millio 的可达性

并检查网络状态然后主机状态(以便您可以显示正确的消息等),然后调用 URL。

于 2013-08-15T13:19:31.080 回答