从标题中可以清楚地看到,我正试图找到一种使用分段控制在视图之间切换的方法。实际上,我已经有了一些东西,它正在发挥作用。你可以在下面找到它:
RETURNS TABLE
因此,它取决于隐藏和可见的原则。我认为使用它是如此常见,因为当我从互联网上搜索时,人们通常会以这种方式获得解决方案。但是,我希望它略有不同。使用我的代码,所有视图都会立即加载,但我想在屏幕上显示视图时加载。如果我从0切换到1索引段,那么我想加载第一个视图并在屏幕上显示。
我该如何管理它?
感谢。
答案 0 :(得分:1)
我在这里回答了一个类似的(不一样但是类似的结果)问题:How To Switch Views With NSNotifications
基本上您可以使用NSNotifications切换视图。您的第一个视图将加载并使用NSNotifications,您可以通过更改视图向自定义类发送通知,以监听和响应;当您在UISegmentControl上选择索引时,您的视图将会更改。
在您的代码中,在您的NSObject类ButtonHandler
中看起来像这样:
- (IBAction)segmentChanged:(id)sender{
UISegmentedControl *segmentedControl = sender;
switch (segmentedControl.selectedSegmentIndex) {
case 0:
[[NSNotificationCenter defaultCenter] postNotificationName:@"notifyButtonPressed1" object:self];
break;
case 1:
[[NSNotificationCenter defaultCenter] postNotificationName:@"notifyButtonPressed2" object:self];
break;
case 2:
[[NSNotificationCenter defaultCenter] postNotificationName:@"notifyButtonPressed3" object:self];
break;
default:
break;
}
}
然后,只需按照我在其他帖子中列出的其余代码进行操作。
这是效果:
<强>更新强>
我已在此链接上创建了有关如何执行此操作的教程:iOS Custom Navigation with UISegmentedControl
要将视图设置为与设备绑定相同,请使用以下命令:
//this will get the size of your device view
//and set it to width and height aka w & h
int w = self.view.frame.size.width;
int h = self.view.frame.size.height;
//THIS SETS THE SIZE AND POSITION OF THE NEW CONTENT
self.content.view.frame = CGRectMake(0, 0, w, h);
答案 1 :(得分:1)
您可以使用Lazy Stored Properties
这样的内容来实现此目的:
lazy var currencyContainer:UIView = {
var newCurrencyContainer = UIView()
// your initialization code
return newCurrencyContainer
}()
惰性存储属性是一个属性,其初始值在第一次使用之前不会计算。 - Apple Docs
OR
通过使用这样的可选变量:
var goldContainer:UIView?
以后检查
if let goldContainer = goldContainer {
// view is already created
} else {
// your custom init
// goldContainer = UIView()
}
希望这会对你有所帮助。