2012-11-05 2 views
1

viewdidLoad에서 tableviewcell을 문제없이 채우는 간단한 rss 리더를 만들었습니다. 내 문제는 내 단추를 클릭 할 때마다 tableview 변경되지 않습니다. 버튼 터치 업으로 리로드를 시도했지만 아무 일도 일어나지 않습니다. Xcode 및 iOS 프로그래밍에 익숙하지 않으므로 도움이됩니다.눌렀을 때 버튼이 UITableView를 채 웁니다.

당신의 pressBtn: 방법에서

#import "ViewController.h" 
#import "KMXMLParser.h" 
#import "WebViewController.h" 
#import "SportsViewController.h" 

@interface ViewController() 
@end 

@implementation ViewController 
{ 
    NSArray *loadData; 
    NSURL *thumbnails; 
} 

@synthesize parseResults=_parseResults; 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    KMXMLParser *parser = [[KMXMLParser alloc] initWithURL:@"http://www.daytonastate.edu/rss/it.xml" delegate:nil]; 

    _parseResults = [parser posts]; 
    [self refreshFeed]; 
     // Do any additional setup after loading the view, typically from a nib. 
} 

-(void) refreshInvoked:(id)sender forState:(UIControlState)state 
{ 
    [self refreshFeed]; 
} 

- (void)didReceiveMemoryWarning 
{ 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 

-(void)refreshFeed 
{ 
    KMXMLParser *parser = [[KMXMLParser alloc] initWithURL:@"http://www.daytonastate.edu/rss/it.xml" delegate:nil]; 

    _parseResults = [parser posts]; 
} 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    // Return the number of sections. 
    return 1; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    // Return the number of rows in the section. 
    return self.parseResults.count; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"DataCell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

    if (cell == nil) 
    { 

     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier]; 
    }// Configure the cell... 
     cell.textLabel.text = (self.parseResults)[indexPath.row][@"title"]; 

    cell.detailTextLabel.text = (self.parseResults)[indexPath.row][@"summary"]; 

    [self reloadData]; 

    return cell; 
} 
#pragma mark - Table view delegate 

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    WebViewController *vc = [[WebViewController alloc] init]; 

    vc.url = [NSURL URLWithString:(self.parseResults)[indexPath.row][@"link"] ]; 

    [self.navigationController pushViewController:vc animated:YES]; 

    //Makes sure function clicks to reader feed. 

    // Navigation logic may go here. Create and push another view controller. 
} 

-(IBAction)pressBtn:(id)sender 
{ 
    UIButton *button= [UIButton buttonWithType:UIButtonTypeRoundedRect]; 

    if (button.tag==1) 
    { 
     NSLog(@"Press button 1"); 
     KMXMLParser *parser = [[KMXMLParser alloc] initWithURL:@"http://www.daytonastate.edu/rss/cea.xml" delegate:nil]; 

     _parseResults = [parser posts]; 

     [self reloadData]; 
    } 
    if (button.tag==2) 
    { 
     NSLog(@"Press button 2"); 
     [self EventsBtn:nil]; 
    } 
} 

- (IBAction)NewsBtn:(id)sender 
{ 
     KMXMLParser *parser = [[KMXMLParser alloc] initWithURL:@"http://rss.cnn.com/rss/cnn_topstories.rss" delegate:nil]; 

     _parseResults = [parser posts]; 
    NSLog(@"reload happened"); 
    // self.printMessage = [[PrintHello alloc] init]; // EDIT: THIS LINE WAS MISSING NOW IT WORKS 
    //[self.printMessage Print]; 

    NSLog(@"NewsBtn Pressed"); 
} 

- (IBAction)SportsBtn:(id)sender 
    { 
     KMXMLParser *parser = [[KMXMLParser alloc] initWithURL:@"http://www.daytonastate.edu/rss/it.xml" delegate:nil]; 

     _parseResults = [parser posts]; 
    } 

- (IBAction)EventsBtn:(id)sender 
{ 
    KMXMLParser *parser = [[KMXMLParser alloc] initWithURL:@"http://www.daytonastate.edu/rss/events.xml" delegate:nil]; 
    _parseResults = [parser posts]; 
    NSLog(@"eventsBtn Pressed"); 
} 

- (IBAction)WeatherBtn:(id)sender 
    { 
     KMXMLParser *parser = [[KMXMLParser alloc] initWithURL:@"http://w1.weather.gov/xml/current_obs/KDAB.rss" delegate:nil]; 

     _parseResults = [parser posts]; 
    } 
@end 
+1

'cellForRowAtIndexPath' 구현 내에서'[self reloadData];를 없앱니다. 이해가되지 않습니다. – Till

+0

... 다음 번에는 방대한 양의 빈 줄과 관련이없는 내용을 포함하는 코드를 게시하십시오 - 이번에는 조금 고쳐 봤습니다. – Till

+0

죄송합니다. – user1794601

답변

1

는,이 라인 교체하는 .m 파일 :

UIButton *button= [UIButton buttonWithType:UIButtonTypeRoundedRect]; 

과 :

UIButton *button = (UIButton *)sender; 

이 IB에서 당신은 이미 후크했다고 가정을 pressBtn: 메소드를 해당 버튼에 추가하십시오. 코드는 pressBtn: 작업이 호출 될 때 새 버튼을 만드는 것이 었습니다. 이 새 버튼에는 tag 값이 있으므로 아무 일도 일어나지 않습니다. 내가 제안한 코드는 실제로 사용자가 탭한 버튼을 사용합니다.

+0

많은 도움이 될 것입니다. D ... +1 – Till

0

호출자 (발신자)를 사용하면 해당 사용자가 조치를 취한 항목입니다. 새 단추를 만들지 말고 단추의 태그를 확인하여 새 단추가 작업 항목이 아니길 원합니다.

최고의 사람을보십시오 :).

관련 문제