求大侠赐教啊! UISplitpopviewcontrollerr 不显示左右两边

扫描二维码,关注牛客网
下载牛客APP,随时随地刷题
浙ICP备号-2
扫一扫,把题目装进口袋君,已阅读到文档的结尾了呢~~
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
Split View Controller在应用的中的若干问题及解决
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口iOS / OC(240)
转自:.cn/s/blog_4adf31ea0100qxoh.html
UISplitViewController类,只有在ipad中才可以使用。
&&ipad的屏幕比iphone大,所以在界面上,ipad比iphone多一个UISplitViewController,用来实现ipad在横屏时,分两栏显示所需要的界面,可以一边是目录一边是具体的内容。
&& 首先创建一个Row1Detail和RootViewController,其中RootViewController继承UITableViewController。同事创建两个相应的xib文件。
AppDelegate 中的代码如下:
@interfacetestsplitviewAppDelegate : NSObject&UIApplicationDelegate& {
&& UIWindow
UISplitViewController
*splitView;
RootViewController
Row1Detail
(nonatomic,retain) IBOutlet
UIWindow *
@property (nonatomic,
retain) IBOutlet UISplitViewController*splitV
(nonatomic,retain)IBOutlet
RootViewController*
(nonatomic,retain) IBOutlet
Row1Detail *
-(BOOL)application:(UIApplication *)applicationdidFinishLaunchingWithOptions:(NSDictionary
*)launchOptions {& &
&& // Override point for customization afterapp launch.&
& &[self.windowaddSubview:splitView.view];
& &[self.windowmakeKeyAndVisible];
return YES;
修改MainWindow.xib文件:添加UISplitViewController容器
绑定的事件如下:
RootViewController的代码如下:
@interface RootViewController :UITableViewController {
Row1Detail
(nonatomic,retain)IBOutlet
Row1Detail*
实现代码:
#import&RootViewController.h&
@implementationRootViewController
@synthesize
#pragma mark -
#pragma mark View lifecycle
-(void)viewDidLoad {
& &[superviewDidLoad];
self.clearsSelectionOnViewWillAppear=
self.contentSizeForViewInPopover
= CGSizeMake(320.0,600.0);
#pragma mark -
#pragma mark Table view data source
-(NSInteger)numberOfSectionsInTableView:(UITableView*)aTableView {
-(NSInteger)tableView:(UITableView *)aTableViewnumberOfRowsInSection:(NSInteger)section {
return 10;
-(UITableViewCell*)tableView:(UITableView*)tableViewcellForRowAtIndexPath:(NSIndexPath
*)indexPath {
static NSString *CellIdentifier =
@&CellIdentifier&;
UITableViewCell *cell = [tableViewdequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
& && & cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefaultreuseIdentifier:CellIdentifier]autorelease];
& && & cell.accessoryType
= UITableViewCellAccessoryNone;
& & cell.textLabel.text = [NSString
stringWithFormat:@&Row %d&, indexPath.row];
#pragma mark -
#pragma mark Table view delegate
-(void)tableView:(UITableView *)aTableViewdidSelectRowAtIndexPath:(NSIndexPath *)indexPath
detail.detailItem = [NSString
stringWithFormat:@&Row %d&, indexPath.row];
Row1Detail的代码
@interface Row1Detail :UIViewController&UISplitViewControllerDelegate&{
id detailItem;
(nonatomic,retain)IBOutlet
UILabel *Text1;
(nonatomic,retain) id
-(IBAction)
实现代码如下:
#import &Row1Detail.h&
@implementation
Row1Detail
@synthesize
@synthesize detailI
-(IBAction) click
NSLog(@&%@&,Text1.text);
UIAlertView
*alert=[[UIAlertView alloc] initWithTitle:@&标题&message:@&22&
delegate:selfcancelButtonTitle:@&关&otherButtonTitles:nil];
Text1.text=@&&;
-(void)setDetailItem:(id)newDetailItem&
if (detailItem != newDetailItem) {
& & && [detailItemrelease];
detailItem =[newDetailItem
Text1.text
=[detailItem description];
// Implement viewDidLoad to do additional setup after loading theview, typically from a nib.
-(void)viewDidLoad&
& &[superviewDidLoad];
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{
&& // Overriden to allow anyorientation.
&& return YES;
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:3201863次
积分:26819
积分:26819
排名:第149名
原创:20篇
转载:978篇
评论:373条
(2)(1)(4)(5)(10)(1)(7)(13)(6)(4)(3)(9)(10)(3)(13)(6)(22)(14)(13)(19)(26)(50)(9)(12)(13)(47)(22)(31)(29)(18)(26)(12)(6)(23)(5)(12)(4)(10)(12)(79)(44)(86)(12)(9)(7)(21)(6)(10)(14)(23)(30)(4)(1)(3)(5)(3)(9)(2)(16)(3)(17)(5)(5)(8)(2)(3)(3)(20)(10)(14)(3)UISplitViewController - NSHipster
iPhone 6+ 的推出让 UISplitViewController 变得更为重要。现在只需一些小的调整,一个应用程序就可以兼容 iPhone 和 iPad,所有不同屏幕尺寸的大部分 UI 逻辑则将由苹果来处理
看看 UISplitViewController 怎样在 iPhone 6+ 上施展魔力的:
注意,当 iPhone 6+ 是 缩放 显示模式视图时不会分屏!(你可以在 Settings.app → Display & Brightness → View 里切换 Standard 或 Zoomed 显示模式)
同样,究竟在什么时候显示拆分视图的逻辑苹果都会处理。
Storyboard 布局
这是一个带有 split view controller 的 Storyboard 的布局概览,它看起来是这样的:
让我们来看看更多的细节:
Master / Detail
使用 UISplitViewController 的第一步是把它拖到 storyboard 里。接下来,指定哪个视图控制器是 Master 哪一个是 Detail。
通过选择适当的 Relationship Segue 来做:
主视图控制器通常是包含列表视图(在大多数情况下是一个 UITableView)的导航控制器。详细信息视图控制器则是显示用户点击列表某项时对应的导航控制器视图。
显示详细内容
还有最后一个部分让拆分视图控制器真正工作:指定 &Show Detail& segue:
在下面的例子中,当用户点击了 SelectColorTableViewController 里的一个单元格,它们会被展示在一个以 colorviewcontroll 为根的导航控制器中。
双重导航控制器?
在这一点上,你可能想知道为什么主视图控制器和详细信息视图控制器都必须是导航控制器,特别是当有一个 &Show Detail& segue 从表格视图(这是导航堆栈的一部分)连接到详细信息视图控制器。如果详细视图控制器一开始不带导航控制器呢?
大体来看,应用程序仍然会工作得很好。在 iPhone 6+ 上,唯一的区别是当手机在横向模式下会没有导航工具栏:
这不是什么大不了的事,除非你想让你的导航栏显示一个标题。但在 iPad 上这最终会是致命的弱点。
请注意,当 iPad 应用程序第一次打开的时候,没有任何迹象表明这是一个拆分视图控制器!触发主视图控制器,用户必须奇迹般的知道要去向右滑动。
即使有导航控制器,在刚开始的时候用户界面也没有好太多(虽然能看到一个标题绝对是一个改进):
displayModeButtonItem
要解决这个问题,最简单的方法是在某种程度上表明应用程序的当前屏幕上有更多的内容。幸运的是,UISplitViewController 有一个 displayModeButtonItem,可以被添加到导航栏:
override func viewDidLoad() {
super.viewDidLoad()
navigationItem.leftBarButtonItem = splitViewController?.displayModeButtonItem()
navigationItem.leftItemsSupplementBackButton = true
编译并重新在 iPad 上运行,现在用户就看到很好的指示,显示如何显示应用程序的其余部分:
UISplitViewController 的 displayModeButtonItem 在 iPhone 6+ 的横向模式下也增加了一些额外的炫酷功能:
通过使用 displayModeButtonItem,你再次让苹果来决定在不同屏幕尺寸、旋转下怎样做最合适。而不是自己辛苦的做这些小事,就可以高枕无忧了。
收起详细视图控制器
通过 ,我们还可以为 iPhone 6+ 做一个优化。
当用户第一次启动应用程序的时候,在用户选择一个列表项前,都可以让主视图控制器完全显示:
import UIKit
class SelectColorTableViewController: UITableViewController, UISplitViewControllerDelegate {
private var collapseDetailViewController = true
// MARK: UITableViewController
override func viewDidLoad() {
super.viewDidLoad()
splitViewController?.delegate = self
// MARK: UITableViewDelegate
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
collapseDetailViewController = false
// MARK: - UISplitViewControllerDelegate
func splitViewController(splitViewController: UISplitViewController, collapseSecondaryViewController secondaryViewController: UIViewController!, ontoPrimaryViewController primaryViewController: UIViewController!) -& Bool {
return collapseDetailViewController
当用户第一次在 iPhone 6+ 上以纵向模式打开应用程序的时候,SelectColorViewController 被显示为主视图控制器。一旦用户选择一种颜色,或该应用进入后台,SelectColorViewController 被再次折叠,并显示 ColorViewController:
一定要查看一下
的文档来了解所有其他你可以用 UISplitViewController 来实现的花哨东西。
鉴于现在作为 iOS 开发者,我们不得不处理新的不同的设备尺寸,UISplitViewController 很快就会成为我们新的好朋友!
你可以 上得到这篇文章所用项目的完整源代码。
is an iOS Engineer at Capital One and secretly a robot. Natasha writes about iOS and Swift on her blog, , and has recently started a .
做 iOS / Mac / Web 开发的大白羊妹子~
下一篇文章
自从 iPhone 存在以来,位置服务就一直处于非常重要的位置。iOS 8 给 Core Location 带来了三个主要更新:更分化的权限,室内定位以及访问监控。
除非另有声明、本网站采用知识共享「」许可协议授权。
本站文章由
Lin Xiangyu
Sheldon Huang
Yifan XiaoUI 面试题_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
上传于||文档简介
&&i​O​S​相​关​面​试​题​最​新
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩5页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢}

我要回帖

更多关于 popviewcontroller 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信