0

ストーリーボードを使用して iOS 7 アプリを作成しました。私の offersViewController 内には、UIView と UITableView があります。UIView は、フィードの解析中に読み込みメッセージを表示するサブビューとして機能します。完了すると、サブビューが削除され、解析されたデータが UITableView に表示されます。

@interface OffersViewController ()

@end

@implementation OffersViewController
@synthesize loadingView;

MoreCobaltOffers *currentFeed;
AppDelegate *appDelegate;

- (void)viewDidAppear:(BOOL)animated
{
    [self.tableView addSubview:loadingView];

    self.navigationItem.titleView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Navigation"]];

    CustomStringParser *customStringParser = [[CustomStringParser alloc] init];

    // Download and parse XML data
    RXMLElement *rxml = [RXMLElement elementFromXMLData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://www.myrssfeed.com"]]];

    // Create an reference to AppDelegate
    appDelegate = [[UIApplication sharedApplication] delegate];

    // Create an array to store each feed
    appDelegate.offersFeeds = [[NSMutableArray alloc] init];

    // Loop Through XML Data
    [rxml iterate:@"channel" usingBlock:^(RXMLElement *supportElement) {

        [supportElement iterate:@"item" usingBlock:^(RXMLElement *repElement) {

            // Assign element to string
            NSString *title = [repElement child:@"title"].text;
            NSString *subtitle = [repElement child:@"tagline"].text;
            NSString *description = [repElement child:@"description"].text;
            NSString *imageurl = [repElement child:@"image"].text;
            NSString *address = [repElement child:@"address"].text;

            // Assign element value to MoreCobalt.h propertys
            currentFeed = [MoreCobaltOffers alloc];
            currentFeed.title = title;
            currentFeed.imageurl = imageurl;
            currentFeed.addressline = address;

            // DESCRIPTION FORMATTING
            description = [customStringParser parseHTML:description];
            description = [customStringParser parseLinesMultiple:description];
            description = [customStringParser removeSocialSignifiers:description];
            description = [customStringParser appendTermsOfUse:description];
            currentFeed.description = description;

            // SUBTITLE FORMATTING
            subtitle = [customStringParser parseHTML:subtitle];
            subtitle = [customStringParser parseLinesSingle:subtitle];
            subtitle = [customStringParser removeSocialSignifiers:subtitle];
            currentFeed.subtitle = subtitle;

            // Add a new object to the feeds array
            [[appDelegate offersFeeds] addObject:currentFeed];
        }];

        //Remove the loading screen
        [loadingView removeFromSuperview];

        //Show table data, if this is not here the table is empty.
        [self.tableView reloadData];
    }];
}

アプリを実行すると、ロード画面が表示され、テーブルにデータが表示されます。このView Controllerから別のタブに移動してから戻ると、テーブルが点滅します。ユーザーエクスペリエンスがあまり良くありません。

担当するコード行は[self.tableView reloadData];. これが必要です。そうしないと、テーブルが空になります。私は何を間違っていますか?

4

2 に答える 2