gpt4 book ai didi

iphone - 在 ScrollView 中创建动态 UIButton 的正确方法?

转载 作者:可可西里 更新时间:2023-11-01 05:22:54 26 4
gpt4 key购买 nike

我是 iOS 开发新手。

我有一个基于导航的应用程序,在我的应用程序中,我使用 for 循环 创建了动态按钮。我在 FirstViewController 中有两个 UITextField()。当用户输入 rowcolumn 的值然后单击 OK 按钮 row 的值column 传递给 anOtherViewController。在 anOtherViewController 中,我必须添加一个逻辑来根据行和列值创建所有按钮。

我的逻辑代码:

for (int i = 1 ; i <= rows; i++)
{
for (int j = 1 ; j <= columns ; j++)
{
NSString *btnTitle = [NSString stringWithFormat:@"%d",buttonCount];
self.btnCount = [UIButton buttonWithType:UIButtonTypeRoundedRect];
self.btnCount.tag = [btnTitle intValue];
[self.btnCount setTitle: btnTitle forState: UIControlStateNormal];
[self.btnCount addTarget:self action:@selector(btnCountPressed:) forControlEvents:UIControlEventTouchUpInside];
self.btnCount.frame = CGRectMake(162+changedX, 60+changedY, 43, 43);
[self.scrollView addSubview:self.btnCount];

[self.listOfbtnCount addObject:btnTitle];

changedY = changedY + 50;
buttonCount = buttonCount + 1;
}
changedX = changedX + 55;
if (i == rows)
widthScView = changedX;

if (heightScView == 0)
heightScView = changedY;

changedY = 5;
}

我的截图:

enter image description here

它工作正常,但我的问题是,如果我输入 的值超过 40(大约) 那么我的应用程序需要更多时间来创建动态按钮。该问题仅与创建按钮所需的时间有关。

有什么方法可以更快地创建按钮?我还需要知道我的代码是否不利于内存管理?请帮我解决这个问题。

供引用: 我没有生成任何错误,我遇到的问题是创建按钮的过程很耗时。

提前致谢。

最佳答案

你应该为此使用 UICollectionView

UICollectionView其工作方式与 UITableView 非常相似,因为它将管理屏幕上显示的单元格,包括滚动,并且它会在需要时向其数据源询问新单元格。您还可以回收电池,因此您只需要创建足够显示的空间,再加上一些额外的空间。这应该真正提高性能,尤其是在滚动时。

Apple 有一些 sample code using UICollectionView here ,并在 2012 WWDC Videos 中观看 Introducing Collection Views会让你有个好的开始。

my problem is that If i enter values of row and column more then 40

40 行 40 列将为您提供 1600 个按钮,其中大部分在大多数时间都不需要存在。通过为您管理屏幕上需要哪些单元格,UICollectionView 会将其减少到大约 80 个(根据您的屏幕截图判断)。通过这种方式,您应该会看到好得多的性能。

UICollectionView 还将简化按钮的定位,一旦您配置了 Collection View (您可以在代码或 Interface Builder 中完成),您将不需要任何自己的代码来计算按钮的位置。

关于iphone - 在 ScrollView 中创建动态 UIButton 的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16140139/

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