减少加载UIView的时间延迟

时间:2014-05-07 05:23:47

标签: ios objective-c uiview time

我的UIView包含超过20个UIButtons。点击这些按钮后,我会显示一个不同的UIView,其中包含UIPickerView和两个UIButtons(' OK'' CANCEL')子视图(每个按钮对应于显示单独且不同的UIVIews)。

我已经通过IB创建了所有UIViews(其中20个)并将所有这些设置为最初隐藏。因此,每当我点击一个按钮,它就会显示一个视图,然后点击“确定”。或者'取消'再次隐藏视图。

问题是当这个View Controller被推送到另一个时,需要很长时间才能加载(比如5秒),并且我怀疑时滞是由于在父{{1}之前加载所有子视图出现。

我想减少或消除这个时间滞后。

修改

我在UIView修剪了代码。

viewDidLoad

这是- (void)viewDidLoad { @try { [super viewDidLoad]; NavigationBarButtonItems *nav=[[NavigationBarButtonItems alloc]init]; self.navigationItem.rightBarButtonItems = [nav BarButtonItems]; //the following properties are only for 'quantity' button and its view whereas the original method contains same properties set for all 20 buttons and its views. _quantityView.layer.cornerRadius=8; _quantityView.clipsToBounds=YES; _quantityButton.layer.cornerRadius=8; _quantityView.hidden=YES; //DEFAULT SELECTED VALUES selectedQuantity=@""; //only quantity array is initialised here to populate its pickerview. The actual code contains more than 20 arrays initalised for each picker view NSArray *quantityData=[[NSArray alloc]init]; for(int i=1;i<=100;i++) [quantityData addObject:[NSString stringWithFormat:@"%d",i]]; quantityArray=quantityData; // Do any additional setup after loading the view. } @catch (NSException *exception) { NSLog(@"Medications-> View did Load-> %@",exception.name); } } (&#39; QUANTITY&#39;)和UIButton(&#39; QUANTITYVIEW&#39;)点击时显示的内容:

UIView

1 个答案:

答案 0 :(得分:0)

简单。

  1. 所有20个UIView都有相同的UI内容,如Picker视图和2个按钮(OK,Cancel)。

  2. Picker视图数据源可能不同。

  3. 因此,创建一个具有这些内容的UIView,并根据将要显示的选择器视图,您可以传递/显示不同的数据。

  4. 您还可以通过指定

    的标记值来区分20个选择器

    pickerview.tag =一个枚举常量(20个值)。

  5. 那&#39;它

    如果所有20个UIView包含不同的UI元素作为其子视图会怎么样?

    1. 不要使用IB

    2. 创建视图时将创建所有这些视图

    3. 采用延迟加载/创建

    4. 编写将创建&amp;的自定义函数或类。给出视图(你的20个中的一个)

    5. 你不会展示所有这些。

    6. 以编程方式创建,因为您需要向用户显示它们。