我有一个UIView
包含超过20 UIButtons
。在点击这些按钮时,我发现一个包含UIPickerView
和两个UIButtons
('OK','CANCEL')的独特UIView
作为其子视图(每个按钮对应于揭示单独和不同的UIVIews
)。减少加载UIView的时间延迟
我已经通过IB创建了所有UIViews
(其中20个),并将它们全部设置为最初隐藏。所以每当我点击一个按钮,它就会显示一个视图,然后点击'OK'或'CANCEL'再次隐藏视图。
问题是,当这个视图控制器是从另一个推动,需要很长时间来加载(如5秒),我怀疑时间滞后是由于加载所有的子视图之前父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
[email protected]"";
//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);
}
}
这是一种这样的UIButton
( '数量')和UIView
( 'QUANTITYVIEW')点击时显示:
- (IBAction)OnClickQuantityButton:(id)sender
{
@try
{
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.01 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
[_mainView setNeedsDisplay];
CGPoint centerPoint = CGPointMake(160, _mainScrollView.contentOffset.y+228);
_quantityView.center= centerPoint;
_quantityView.hidden=NO;
});
}
@catch (NSException *exception)
{
NSLog(@"Medications-> quantity button-> %@",exception.name);
}
}
- (IBAction)OnClickQuantityOkButton:(id)sender
{
@try
{
_quantityLabel.text=selectedQuantity;
_quantityView.hidden=YES;
}
@catch (NSException *exception)
{
NSLog(@"Medications-> quantity ok button-> %@",exception.name);
}
}
- (IBAction)OnClickQuantityCancelButton:(id)sender
{
_quantityView.hidden=YES;
}
你能显示一些代码吗?谢谢。 – Ricky
为什么不在需要时创建20个UIView中的每一个。尝试“懒惰实例化”。 – CrimsonChris
@ voyage11检查编辑 – motox