1

viewdidLoad で tableviewcell を問題なく生成する単純な rss リーダーを作成しました。私の問題は、ボタンをクリックするたびにテーブルビューが変わらないことです。内部のボタンタッチアップでリロードを試みましたが、まだ何も起こりません。Xcode と iOS プログラミングはかなり新しいので、どんな助けも素晴らしいです。

.m ファイル

#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
4

2 に答える 2

1

pressBtn:メソッドで、次の行を置き換えます。

UIButton *button= [UIButton buttonWithType:UIButtonTypeRoundedRect];

と:

UIButton *button = (UIButton *)sender;

pressBtn:これは、IB で既にメソッドを適切なボタンに接続していることを前提としています。pressBtn:あなたが持っていたコードは、アクションが呼び出されたときに新しいボタンを作成していました。この新しいボタンのtag値は 0 であるため、何も起こりません。私が提案するコードは、ユーザーがタップしたボタンを実際に利用します。

于 2012-11-05T22:17:38.040 に答える
0

インボーカー (送信者) を使用して、それに対してアクションを実行したアイテムです。新しいボタンを作成しないでください。ボタンのタグを確認したいので、新しいボタンは作業のアイテムではありません。

あなたのベストマンを試してみてください:)。

于 2012-11-05T22:40:14.693 に答える