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 回答