gpt4 book ai didi

ios - 推送到另一个 View Controller 在 iphone 中花费太多时间

转载 作者:行者123 更新时间:2023-12-01 19:04:20 25 4
gpt4 key购买 nike

我有一个应用程序,我最初在其中打开一个来自 web 服务的图像网格。

我正在使用 danieltull 的 DTGridView。

这些图像来自不同的类别,如自然、艺术、绘画等。

最初,当应用程序启动时,网格包含来自所有类别的图像。

主屏幕上有一个类别按钮,单击哪个用户将被推送到另一个 View ,其中提到了不同的类别,如自然、艺术、绘画等。

如果用户单击任何类别,他将再次被引导到图像网格,但将仅包含来自该选定类别的图像。

问题是当用户单击任何类别时,导航到 GridView 需要太多时间。

当用户单击任何类别时,我正在从 web 服务获取数据。

我想在用户单击类别后立即将其导航到 Gridview,然后想要显示自定义 Spinner。

在选择类别时,我正在执行以下代码并调用 gridview 的方法。

 if ([self isPad])
{
vc = [[ViewController alloc]initWithNibName:@"ViewController_iPad" bundle:nil];
}
[self.navigationController pushViewController:vc animated:NO];
[vc getCategoryNames];

请帮助我。

** 已编辑 **
- (NSInteger)numberOfRowsInGridView:(DTGridView *)gridView
{
if (countimages % 4 == 0)
{
return countimages/4;
}
else
{

return countimages/4 + 1;

}

}

- (NSInteger)numberOfColumnsInGridView:(DTGridView *)gridView forRowWithIndex:(NSInteger)index
{
return 4;
}

- (CGFloat)gridView:(DTGridView *)gridView1 heightForRow:(NSInteger)rowIndex
{
return gridView1.frame.size.height / 3;
// return 300;
// NSLog(@"%f",gridView1.frame.size.height/3);

}

- (CGFloat)gridView:(DTGridView *)gridView1 widthForCellAtRow:(NSInteger)rowIndex column:(NSInteger)columnIndex
{
return gridView1.frame.size.width / 4;
//return 300;
// NSLog(@"%f",gridView1.frame.size.width/4);
}

- (DTGridViewCell *)gridView:(DTGridView *)gv viewForRow:(NSInteger)rowIndex column:(NSInteger)columnIndex {

DTGridViewCell *cell = [gv dequeueReusableCellWithIdentifier:@"cell"];

if (!cell) {
cell = [[DTGridViewCell alloc] initWithReuseIdentifier:@"cell"];
UIView* v=[[UIView alloc]init];
v.frame=CGRectMake(0, 0, gridView.frame.size.width / 4, gridView.frame.size.height / 3);
[cell addSubview:v];

imgeIndex = 0;
imgeIndex = (rowIndex * 4) + columnIndex;

UIButton *btn = [[UIButton alloc]initWithFrame:CGRectMake(0, 0, gridView.frame.size.width / 4, gridView.frame.size.height / 3)];
[btn setTag:imgeIndex+1];
[btn addTarget:self action:@selector(btnPressed:) forControlEvents:UIControlEventTouchUpInside];
btn.contentMode = UIViewContentModeScaleAspectFit;
if ([arr_imgurl count] <= imgeIndex)
{
btn.imageView.image=[UIImage imageNamed:@"logo_256.png"];
return cell;
}
else
{
//NSLog(@"arr %d",[arr_imgurl count]);
// NSLog(@"imgindex %d",imgeIndex);
// NSLog(@"array %@",arr_imgurl);
NSURL *url = [NSURL URLWithString:[arr_imgurl objectAtIndex:imgeIndex]];
//NSLog(@"%@",url);
[btn setImageWithURL:url placeholderImage:[UIImage imageNamed:@"logo_256.png"]];


}
btn.titleLabel.textColor = [UIColor whiteColor];

[v addSubview:btn];
[database close];

return cell;
}

这里 arr_imgurl 包含来自 web 服务的图像路径。

最佳答案

导航时从不调用 Web 服务(原因:它会一直保持导航,直到它收到完整的信息,我们始终无法确定服务器速度)。所以更好地导航,然后在线程中调用服务,同时显示带有事件指示器的屏幕,这样用户会认为应用程序正在加载图像。(确保图像加载延迟,因为用户没有耐心等到所有图像都加载完毕) .如果您需要此示例,我将对其进行编码并给您。

关于ios - 推送到另一个 View Controller 在 iphone 中花费太多时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20741638/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com