我是iOS开发的新手。
我有一个基于导航的应用程序,在我的应用程序中,我使用for循环
创建动态按钮。
在FirstViewController
中,我有两个UITextField
(行和列)。当用户输入行和列的值,然后点击OK按钮
,行和列的值将传递给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;
}
我的屏幕截图:
它运作良好,但我的问题是,如果我输入的行和列的值超过了40(大约),那么我的应用程序需要更长的时间来创建动态按钮。这个问题只与创建按钮所需的时间有关。
有没有办法更快地创建按钮?我还需要知道的是,我的代码是否有助于内存管理的问题?请在这些问题上帮助我。
附加信息:我没有生成错误,我只有一个耗费时间的按钮创建问题。
提前感谢您的帮助。
for
循环是一个问题,因为你创建的按钮远多于用户一次能看到的数量,而且这个过程肯定耗时。如果将 UICollectionView 嵌入你的项目中,你根本不需要for
循环了--集合视图会要求其代理 (通常是你的视图控制器)在需要时创建每个单元格 (即每个按钮)。 - Caleb