AMSlideMenu单击单击需要时间打开另一个视图?

时间:2014-09-04 19:51:12

标签: ios objective-c json uitableview amslidemenu

我正在构建一篇阅读app的文章。我正在使用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;
             }

1 个答案:

答案 0 :(得分:0)

这是因为你在viewDidLoad方法中做了许多同步执行的工作,并且只有在viewDidLoad中的代码不能完全执行时才会显示视图控制器。 因此,异步加载数据或在viewDidAppear方法中执行此操作,但我强烈建议您以异步方式执行此操作。