Mar*_*ams 82 iphone objective-c uisegmentedcontrol ios
我正试图弄清楚如何使用UISegmentedControl的不同状态来切换视图,类似于Apple在"顶级付费"和"顶级免费"之间切换时在App Store中的操作方式.
Ron*_*iew 112
最简单的方法是使用两个视图来切换其可见性以指示已选择哪个视图.下面是一些关于如何完成它的示例代码,绝对不是处理视图的优化方法,而只是为了演示如何使用UISegmentControl来切换可见视图:
- (IBAction)segmentSwitch:(id)sender {
UISegmentedControl *segmentedControl = (UISegmentedControl *) sender;
NSInteger selectedSegment = segmentedControl.selectedSegmentIndex;
if (selectedSegment == 0) {
//toggle the correct view to be visible
[firstView setHidden:NO];
[secondView setHidden:YES];
}
else{
//toggle the correct view to be visible
[firstView setHidden:YES];
[secondView setHidden:NO];
}
}
Run Code Online (Sandbox Code Playgroud)
您当然可以进一步重新调整代码以隐藏/显示正确的视图.
Mar*_*c M 45
在我的情况下,我的观点非常复杂,我不能只改变不同视图的隐藏属性,因为它会占用太多内存.
我已经尝试了几种解决方案,并且它们不适用于我,或者执行不正常,特别是在推送/弹出视图时,navBar的titleView并不总是显示segmentedControl.
我发现这篇关于该问题的博客文章解释了如何以正确的方式做到这一点.似乎他在2010年WWDC上得到了苹果工程师的帮助,想出了这个解决方案.
http://redartisan.com/2010/6/27/uisegmented-control-view-switching-revisited
此链接中的解决方案是我迄今为止发现的有关此问题的最佳解决方案.通过一点调整,底部的tabBar也可以正常工作
一个想法是让具有分段控件的视图具有容器视图,您可以使用不同的子视图填充(在切换段时添加为容器视图的唯一子视图).你甚至可以为这些子视图设置单独的视图控制器,但如果你需要它们,你必须转发重要的方法,如"viewWillAppear"和"viewWillDisappear"(并且必须告诉他们它们所属的导航控制器).
通常情况下效果很好,因为您可以在IB中布置带容器的主视图,子视图将填充容器允许的任何空间(确保正确设置自动调整大小的掩码).
| 归档时间: |
|
| 查看次数: |
95555 次 |
| 最近记录: |