从“实用程序应用程序翻转侧视图”中删除标题栏
Posted
技术标签:
【中文标题】从“实用程序应用程序翻转侧视图”中删除标题栏【英文标题】:Removing titlebar from 'Utility Application's flipside view 【发布时间】:2009-06-14 14:32:27 【问题描述】:我在实用程序应用程序模板的反面放置了一张表格。模板会自动放置一个带有完成按钮的标题栏以返回前视图。
When one of the cells in the flipside's table is selected, it brings up the Camera / Image Library picker.但是它留下了标题栏的位置,部分遮挡了选择器界面。
如何在选择器生效时删除标题栏? 谢谢
【问题讨论】:
【参考方案1】:-
为 UINavigationBar 添加一个 outlet 到 FlipsideViewController.h。
打开 FlipsideView.xib 并连接插座。
显示图像选择器时,将 UINavigationBar 的 hidden 属性设置为 true。
当图像选择器关闭时,将 hidden 属性设置为 false。
【讨论】:
谢谢,但 FlipsideView.xib 没有 UINavigationBar。该栏是在 RootViewController.h 中以编程方式创建的,如下所示: UINavigationBar *aNavigationBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 44.0)]; aNavigationBar.barStyle = UIBarStyleBlackTranslucent; self.flipsideNavigationBar = aNavigationBar; [aNavigationBar 发布]; ^ 我的意思是 RootViewController.m 啊,您必须使用较旧的模板(新的实用程序应用程序没有 RootViewController)。好吧,同样的原则也适用——在显示选择器时将 hidden 设置为 true,在隐藏选择器时将其设置为 false。您可能需要一个实例变量来指向 RootViewController。 嗯,不知道如何设置实例变量指向 RootViewController.. 你的意思是把 IBOutlet RootViewController *rootViewController;在 FlipSideView.h 中(和属性,合成它)?如果是这样,我不确定如何链接到实际的 RootViewController?如果我在 OS 3.0 模板中这样做会更容易吗? ^ 应该是'FlipSideViewController.h'【参考方案2】:我在这里完全绕圈子。显然有一些基本的东西我不明白......
在我的 RootViewController 中,加载 FlipsideView:
FlipsideViewController *viewController = [[FlipsideViewController alloc] initWithNibName:@"FlipsideView" bundle:nil];
self.flipsideViewController = viewController;
[viewController release];
// Set up the navigation bar
UINavigationBar *aNavigationBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 44.0)];
aNavigationBar.barStyle = UIBarStyleBlackTranslucent;
self.flipsideNavigationBar = aNavigationBar;
[aNavigationBar release];
UIBarButtonItem *buttonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(toggleView)];
UINavigationItem *navigationItem = [[UINavigationItem alloc] initWithTitle:@"App Title"];
navigationItem.rightBarButtonItem = buttonItem;
[flipsideNavigationBar pushNavigationItem:navigationItem animated:NO];
[navigationItem release];
[buttonItem release];
同时,在我的 FlipViewController 中,这显示了图像选择器:
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
// THIS IS NOT WORKING
[self.navigationController.navigationBar setHidden:YES];
[self presentModalViewController:picker animated:YES];
[picker release];
我已经评论了我认为会删除导航栏的部分。
【讨论】:
【参考方案3】:在执行 UIViewTransitionAnimationFlipFromLeft(或 UIViewTransitionAnimationFlipFromRight)的动画块内,添加导航栏的移除:
[flipsideNavigationBar removeFromSuperView];
【讨论】:
UIViewTransitionAnimationFlipFromLeft 没有动画块 或 UIViewTransitionAnimationFlipFromRight。你是如何“颠覆”你的观点的?您必须使用带有 UIViewAnimationTransition 的动画块,这是唯一受支持的方式。 你是对的,它使用 UIViewAnimationTransitionFlipFromLeft。然而,这不是问题。问题是在使用选择器时删除标题栏。翻转在 RootViewController 中。我需要从 FlipsideViewController 中删除标题栏。以上是关于从“实用程序应用程序翻转侧视图”中删除标题栏的主要内容,如果未能解决你的问题,请参考以下文章