我正在构建一篇阅读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;
}
答案 0 :(得分:0)
这是因为你在viewDidLoad方法中做了许多同步执行的工作,并且只有在viewDidLoad中的代码不能完全执行时才会显示视图控制器。 因此,异步加载数据或在viewDidAppear方法中执行此操作,但我强烈建议您以异步方式执行此操作。