0

メニューリストにはAMSliderMenu( https://github.com/SocialObjects-Software/AMSlideMenu )ライブラリを使用しています。
AMSlideMenu の任意のセルをクリックすると、記事のリストを含む別のテーブル ビューに読み込まれます。JSONを使用してuitableviewで記事データを取得しています。
問題は、AMSlideMenu のメニュー リストをクリックすると、別のビューを開くのに時間がかかることです。この問題を解決するにはどうすればよいですか。

これが私のコードです:

        - (void)viewDidLoad
            {
             [super viewDidLoad];
             BOOL myBool = [self isNetworkAvailable];
             if (myBool)
                {
                 @try {

                   _Title1 = [[NSMutableArray alloc] init];
                   _Author1 = [[NSMutableArray alloc] init];
                  _Images1 = [[NSMutableArray alloc] init];
                 NSData* data = [NSData dataWithContentsOfURL:ysURL];
            NSArray *ys_avatars = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];

               if(ys_avatars){
                for (int j=0;j<ys_avatars.count;j++)
                 {
                    [_Title1 addObject:ys_avatars[j][@"title"]];
                    [_Author1 addObject: ys_avatars[j][@"author"]];
                     [_Images1 addObject: ys_avatars[j][@"featured_img"]];
    }

           }

        else

        {

            NSLog(@"asd");

          }

      }

    @catch (NSException *exception) {

     }

    [self LoadMore];

    [self LoadMore];
           });

          });

       }

       }

          -(void)LoadMore
         {     BOOL myBool = [self isNetworkAvailable];
      if (myBool)
        {

     @try {

           // for table cell seperator line color

         self.tableView.separatorColor = [UIColor colorWithRed:190/255.0 green:190/255.0 blue:190/255.0 alpha:1.0];

         // for displaying the previous screen lable with back button in details view controller

         UIBarButtonItem *backbutton1 = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStyleBordered target:nil action:nil];
         [[self navigationItem] setBackBarButtonItem:backbutton1];
         NSString *urlString=[NSString stringWithFormat:@"www.example.com&page=%d",x];                             NSURL *newUrl=[NSURL URLWithString:urlString];
               NSData* data = [NSData dataWithContentsOfURL:newUrl];
             NSArray *ys_avatars = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
           x++;
         if(ys_avatars){                 
           for (int j=0;j<_Title1.count ;j++)
              {
               [_Title1 addObject:ys_avatars[j][@"title"]];
                 [_Author1 addObject: ys_avatars[j][@"author"]]; 
                [_Images1 addObject: ys_avatars[j][@"featured_img"]];

           }             }
           else
              { NSLog(@"asd");       }
              [self.tableView reloadData];}
             @catch (NSException *exception) {
          }} }

        - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

           {
              return 1;
                }
        - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
       {
        return _Title1.count;
             }
4

1 に答える 1

0

これは、同期的に実行されている viewDidLoad メソッドで多くの作業を行ったため、viewDidLoad のコードが完全に実行されなくなるまで、そのビュー コントローラーは表示されません。したがって、データを非同期でロードするか、viewDidAppear メソッドでロードしますが、非同期でロードすることを強くお勧めします。

于 2014-09-19T07:29:35.910 に答える