我知道已经多次说过这个问题,但似乎我无法找到解决方案。我有一个应用程序,它在视图控制器内部有一个容器视图控制器,它是一个表视图控制器。在此表视图中加载了一些rss feed。当我打开我的应用程序没有互联网连接我的数据没有出现,但在我将我的应用程序连接到互联网后,我的表应该在我拉下表后重新加载,但事实并非如此。我尝试了很多东西,但我找不到解决方案。我发布我的代码,所以如果有人可以帮助我会很感激。谢谢。
- (void)viewDidLoad {
[super viewDidLoad];
feeds = [[NSMutableArray alloc] init];
NSURL *url = [NSURL URLWithString:@"http://url"];
parser = [[NSXMLParser alloc] initWithContentsOfURL:url];
[parser setDelegate:self];
[parser setShouldResolveExternalEntities:NO];
[parser parse];
Reachability *networkReachability = [Reachability reachabilityForInternetConnection];
NetworkStatus networkStatus = [networkReachability currentReachabilityStatus];
self.tableView.dataSource = self;
self.tableView.delegate = self;
if (networkStatus == NotReachable)
{
number = 0;
}
else{
number = 1;
}
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
num = 5;
}
else{
num = feeds.count;
}}
这些是我调用表格的主要方法
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return number;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
if(feeds.count > num){
return num + 1;
}
return num;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
cell.textLabel.text = [[feeds objectAtIndex:indexPath.row] objectForKey: @"title"];
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
cell.userInteractionEnabled = YES;
// Set up the cell
[cell.textLabel setFont:[UIFont fontWithName:@"Verdana" size:15]];
[cell.textLabel setNumberOfLines:2];
[cell.detailTextLabel setFont:[UIFont fontWithName:@"Verdana" size:12]];
cell.textLabel.text = [[feeds objectAtIndex:indexPath.row] objectForKey: @"title"];
}
return cell;
}
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {
element = elementName;
if ([element isEqualToString:@"item"]) {
item = [[NSMutableDictionary alloc] init];
title = [[NSMutableString alloc] init];
link = [[NSMutableString alloc] init];
}
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
if ([elementName isEqualToString:@"item"]) {
[item setObject:title forKey:@"title"];
[item setObject:link forKey:@"link"];
[feeds addObject:[item copy]];
}
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
if ([element isEqualToString:@"title"]) {
[title appendString:string];
} else if ([element isEqualToString:@"link"]) {
[link appendString:string];
}
}
- (void)parserDidEndDocument:(NSXMLParser *)parser {
[self.tableView reloadData];
}
这是我在下拉
后重新加载数据的地方- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset {
CGPoint targetPoint = *targetContentOffset;
CGPoint currentPoint = scrollView.contentOffset;
if (targetPoint.y > currentPoint.y) {
[self.tableView reloadData];
}}
答案 0 :(得分:0)
您是否将实现scrollViewWillEndDragging
的类声明为实现UIScrollViewDelegate
?尝试在该事件处理程序中放置一个断点,并在下拉列表时查看代码是否正在执行。
编辑:您只是在第一次加载视图时更新number
变量,并且只要没有互联网,您就会将其初始化为0。因此,您永远不会获得任何行,因为没有任何部分可以显示它。