QLViewController在ios6中隐藏打印按钮
如何在QLViewController在ios6中隐藏打印按钮,ios6,qlpreviewcontroller,Ios6,Qlpreviewcontroller,如何在qlviewcontroller 在IOS5中,此代码有效 QLPreviewController *previewController = [[QLPreviewController alloc] init]; previewController.dataSource = self; previewController.delegate = self; previewController.currentPreviewItemIndex = _fileidx; [[self navigat
qlviewcontroller
在IOS5
中,此代码有效
QLPreviewController *previewController = [[QLPreviewController alloc] init];
previewController.dataSource = self;
previewController.delegate = self;
previewController.currentPreviewItemIndex = _fileidx;
[[self navigationController] pushViewController:previewController animated:YES];
[previewController.navigationItem setRightBarButtonItem:nil];
但在IOS6中,它没有。问题是,一旦文档准备好,按钮似乎就会重新生成。我无法真正定义“就绪”,但我编写了一个测试应用程序,并注意到以下几点:
- 在iOS6中设置NavigationItem的右栏按钮不起作用
- 扫描视图层次结构,搜索UIToolbar实例,并设置工具栏按钮
- 搜索导航项
- 使用NSTimer不断隐藏它
NSTimer oTimer = NSTimer.CreateRepeatingTimer(0.2, this.HidePrintButton);
NSRunLoop.Current.AddTimer(oTimer, NSRunLoopMode.Default);
private void HidePrintButton()
{
if(this.oNavItem == null)
{
return;
}
this.InvokeOnMainThread(
delegate {
this.oNavItem.SetRightBarButtonItems( new UIBarButtonItem[0], false );
} );
}
这将搜索导航项:
/// <summary>
/// Finds the first navigation item inside a view hierachy.
/// </summary>
/// <param name='oCurrentView'>the view to start searching from</param>
/// <param name='oItem'>will be set if the navigation item was found</param>
public static void FindNavigationItem(UIView oCurrentView, ref UINavigationItem oItem)
{
if(oItem != null || oCurrentView == null || oCurrentView.Subviews == null || oCurrentView.Subviews.Length <= 0)
{
return;
}
// Check if a UINavigationBar was found. This will contain the UINavigationItem.
if(oCurrentView is UINavigationBar)
{
UINavigationBar oBar = (UINavigationBar)oCurrentView;
if(oBar.Items != null && oBar.Items.Length > 0)
{
oItem = oBar.Items[0];
}
return;
}
// Recursively loop all sub views and keep on searching.
foreach (var oSubView in oCurrentView.Subviews)
{
FindNavigationItem(oSubView, ref oItem);
if(oItem != null)
{
break;
}
}
}
//
///查找视图层次结构中的第一个导航项。
///
///要从中开始搜索的视图
///如果找到导航项,将设置
公共静态无效FindNavigationItem(UIView oCurrentView,参考UINavigationItem oItem)
{
如果(oItem!=null | | oCurrentView==null | | oCurrentView.Subviews==null | | oCurrentView.Subviews.Length 0)
{
oItem=oBar.Items[0];
}
返回;
}
//递归地循环所有子视图并继续搜索。
foreach(oCurrentView.subview中的var oSubView)
{
FindNavigationItem(oSubView,参考文件);
如果(oItem!=null)
{
打破
}
}
}
我通过创建一个计时器来检查导航项并将其删除,从而成功地完成了这一任务
myTimer = [NSTimer scheduledTimerWithTimeInterval:1.0
target:self
selector:@selector(hideRightButton:)
userInfo:nil
repeats:YES];
- (void)hideRightButton:(NSTimer *)timer {
[self inspectSubviewsForView:self.view];
}
- (void)inspectSubviewsForView:(UIView *)view
{
for (UIView *subview in view.subviews)
{
NSLog(@"class detected %@",[subview description]);
if ([subview isKindOfClass:[UINavigationBar class]])
{
UINavigationBar *bar = (UINavigationBar *)subview;
if ([[bar items] count] > 0)
{
UINavigationItem *navItem = [[bar items] objectAtIndex:0];
[navItem setRightBarButtonItem:nil];
{
}
if ([subview isKindOfClass:[UIView class]] && [[subview subviews] count] > 0)
{
[self inspectSubviewsForView:subview];
}
}
}
[self inspectSubviewsForView:subview];
}
}
您可以详细说明一下
,但在IOS6中,它没有。您是否收到错误或异常?还是一切正常,但打印按钮没有隐藏?在iOS6中,按钮不会隐藏,这就是“它没有”的意思。