我的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
答案 0 :(得分:0)
简单。
所有20个UIView都有相同的UI内容,如Picker视图和2个按钮(OK,Cancel)。
Picker视图数据源可能不同。
因此,创建一个具有这些内容的UIView,并根据将要显示的选择器视图,您可以传递/显示不同的数据。
您还可以通过指定
的标记值来区分20个选择器pickerview.tag =一个枚举常量(20个值)。
那&#39;它
如果所有20个UIView包含不同的UI元素作为其子视图会怎么样?
不要使用IB
创建视图时将创建所有这些视图
采用延迟加载/创建
编写将创建&amp;的自定义函数或类。给出视图(你的20个中的一个)
你不会展示所有这些。
以编程方式创建,因为您需要向用户显示它们。