이것은 내 첫 번째 iOS 앱이므로 수정 방법에 대한 자세한 설명을 매우 기뻐할 것입니다. 내 XML 테이블이 데이터를 새로 고칠 수 있도록 새로 고침을 구현하려고합니다. 현재 애니메이션 새로 고침이 작동하지만 데이터가 새로 고침되지 않습니다.UIRefreshControl이 XML 테이블 뷰를 새로 고치지 않습니다.
지금까지받은 지원에 대한 세부 설명이 충분하지 않았습니다. 나는 일하는 새로 고침에 가까워 보인다. 그러나 나는 공식적으로 난처하게하게된다. NSLog는 다음을 반환합니다. 2014-02-08 11 : 24 : 58.483 MyApp [3186 : 70b] 누군가 내 코드에 수정 사항을 붙여 넣을 수 있습니까? 고맙습니다!
- (void)refresh:(UIRefreshControl *)sender {
// ... your refresh code
NSURL *url = [NSURL URLWithString:@"http://www.placeholder.xml"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
(void)[[NSURLConnection alloc] initWithRequest:request delegate:self];
[sender endRefreshing];
}
뭘 새로 고침 제어를 말하고 여기에서하고있는 후 상쾌한 즉시을 종료 :
#import "MasterViewController.h"
#import "DetailViewController.h"
@interface MasterViewController() {
NSXMLParser *parser;
NSMutableArray *feeds;
NSMutableDictionary *item;
NSMutableString *title;
NSMutableString *link;
NSString *element;
}
@end
@implementation MasterViewController
- (void)awakeFromNib {
[super awakeFromNib];
}
// Paste Blog feed here
- (void)viewDidLoad {
[super viewDidLoad];
feeds = [[NSMutableArray alloc] init];
NSURL *url = [NSURL URLWithString:@"http://www.placeholder.xml"];
parser = [[NSXMLParser alloc] initWithContentsOfURL:url];
[parser setDelegate:self];
[parser setShouldResolveExternalEntities:NO];
[parser parse];
UIRefreshControl *refreshControl = [UIRefreshControl new];
[refreshControl addTarget:self
action:@selector(refresh:)
forControlEvents:UIControlEventValueChanged];
refreshControl.attributedTitle =
[[NSAttributedString alloc] initWithString:@"Pull to refresh..."];
self.refreshControl = refreshControl;
}
- (void)refresh:(UIRefreshControl *)sender {
// ... your refresh code
NSLog(@"refreshing...");
NSURL *url = [NSURL URLWithString:@"http://www.placeholder.xml"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
(void)[[NSURLConnection alloc] initWithRequest:request delegate:self];
[sender endRefreshing];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}
#pragma mark - Table View
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView
numberOfRowsInSection:(NSInteger)section {
return feeds.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell =
[tableView dequeueReusableCellWithIdentifier:@"Cell"
forIndexPath:indexPath];
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)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([[segue identifier] isEqualToString:@"showDetail"]) {
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
NSString *string = [feeds[indexPath.row] objectForKey:@"link"];
[[segue destinationViewController] setUrl:string];
}
}
@end
NSURLConnection 대리인은 어디에 있습니까? 또한 같은 URL을 사용하고 있다면 어떻게 다른 데이터를 얻을 수 있습니까? –
코드가 실제로 refresh : 메소드에 도달 했습니까? NSLog를 설치하고 저희에게 알려주십시오. 그렇지 않은 경우 새로 고침 제어 문제입니다. 새로 고침 :을 호출하면 Midhun이 말한 것처럼 NSURLConnection 메서드에 문제가 있습니다. 어쩌면 iOS7의 더 나은 대안은 이제 NSURLSession이 멋진 완성 처리기이므로 모든 업데이트 코드를 거기에 넣을 수 있습니다. –
데이터가 새로 고쳐지지 않습니다. 애니메이션을 새로 고침하기 만하면됩니다. 수정 코드를 코드에 붙여 넣을 수 있습니까? 내가 언급했듯이, 이것은 나의 첫 번째 앱이다. – user3251476