使用Facebook的新SSO,登录Facebook意味着我的应用程序暂时关闭.问题是我的应用程序要求规定它不能在后台运行.因此,当我的应用程序重新启动时,它位于原始选项卡/视图控制器上.
我试图让事情回到facebook登录视图.这需要以编程方式选择选项卡并从该选项卡推送到单独的视图控制器.
我可以通过编程方式选择一个选项卡没问题:
[[UIApplication sharedDelegate].tabBarController setSelectedIndex:4];
Run Code Online (Sandbox Code Playgroud)
但是我无法从新选择的选项卡中推送视图控制器.我试过了
AboutViewController *nextViewController = [[AboutViewController alloc] initWithStyle:UITableViewStyleGrouped];
((AboutViewController *)nextViewController).hidesBottomBarWhenPushed = NO;
[[[[[UIApplication sharedDelegate] tabBarController] selectedViewController ] navigationController] pushViewController:nextViewController animated:NO];
[nextViewController release];
Run Code Online (Sandbox Code Playgroud)
和
AboutViewController *nextViewController = [[AboutViewController alloc] initWithStyle:UITableViewStyleGrouped];
((AboutViewController *)nextViewController).hidesBottomBarWhenPushed = NO;
[[[[[UIApplication sharedDelegate] tabBarController] navigationController] pushViewController:nextViewController animated:NO];
[nextViewController release];
Run Code Online (Sandbox Code Playgroud)
甚至可以这样做吗?
iphone tabbar pushviewcontroller single-sign-on facebook-graph-api
我不确定为什么在我去pushViewController时遇到SIGABRT错误.我将mpCustomFoodController作为IBOUTLET并在我的nib文件中有一个viewController和一个等待接收它的文件但是每次都在这个调用上失败.
-(IBAction)createNewCustomFood:(id)sender{
[self cancelButtonColorChange:sender];
self.title = @"Cancel";
mpCustomFoodController = [[MPCustomFood alloc]initWithNibName:@"MPCustomFood" bundle:nil];
//this is where the error occurs once is calls this
[self.navigationController pushViewController:mpCustomFoodController animated:YES];
//this will be calling the new view
Run Code Online (Sandbox Code Playgroud)
}
我有一个iOS应用程序,在UINavigationController中设计.但是,其中一个推送的视图控制器需要一个全屏视图,而顶部没有导航栏.(要回来,只有一个小的圆形按钮).但是,我尝试"隐藏"导航栏的任何方法(navigationCtl.navigationBar.hidden = TRUE)都会给我留下难看的瑕疵 - 在推送视图之前调用它(在viewDidLoad或viewWillAppear中)导致前面的视图控制器栏到幻灯片白色就像幻灯片左侧动画开始一样.同样,在viewDidAppear中调用它会在第二个视图的顶部留下一个白色条,以及几个向下推的子视图.有没有什么方法可以像往常一样让新视图滑过,但是当它结束时,根本没有导航栏?
请注意,为了帮助Google,基本上这里的问题是:
如何在两个UIViewControllers之间设置动画,当顶部有一个导航栏,另一个顶部没有导航栏时.那么,如何从带有导航栏的UIViewController导航到没有导航栏的导航 - 避免可怕的闪烁.
Ev下面给出了令人惊讶的答案......很棒.
uinavigationbar uiviewcontroller uinavigationcontroller pushviewcontroller ios
我试图让我的ViewController以与标准PushViewConrtoller相同的速度从左向右滑动,我没有使用NavBar并且不想使用Modal,是否有一种简单的方法可以做到这一点,我已经看到不同线程上的很多变化,但它们都没有正常工作!
我正在使用带有以下代码的导航控制器来实现我的推送权限......
- (IBAction)launch1990:(id)sender {
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"1990Storyboard" bundle:nil];
UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"1990"];
[self.navigationController pushViewController:vc animated:YES];
}
Run Code Online (Sandbox Code Playgroud) 看起来我在navigationController pushViewController方法中发现了一个错误.为了重新创建它,我采用了示例主详细信息项目并对该-didSelectRow:方法进行了一些更改:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
DetailViewController* view = [self.storyboard instantiateViewControllerWithIdentifier: @"view"];
NSDate *object = _objects[indexPath.row];
[view setDetailItem:object];
[self.detailViewController.navigationController pushViewController:view animated:YES];
}
Run Code Online (Sandbox Code Playgroud)
我还将详细视图的故事板ID更改为"查看".这是发生的事情:
当慢慢选择任何主人的行时(当推动画完成时),它可以正常工作:

如果在动画仍显示时选择任何行,则详细视图将变为非活动状态(显示在错误之前使用push方法调用的最后一行),并且只有导航栏显示新视图的推送动画:

发生这种情况时,您会在调试器输出中收到一些警告:
Finishing up a navigation transition in an unexpected state. Navigation Bar subview tree might get corrupted.
nested push animation can result in corrupted navigation bar
Unbalanced calls to begin/end appearance transitions for <DetailViewController: 0x8a6e070>.
Run Code Online (Sandbox Code Playgroud)
这是令人讨厌的部分:如果你回到详细视图的导航栏然后在Master的tableview中选择一个不同的行,或者在详细信息中返回两次应用程序崩溃
Can't add self as subview
Run Code Online (Sandbox Code Playgroud)
但是,如果您在ios6上运行相同的代码,它可以正常工作,没有任何问题或警告.
目前解决方案
用动画调用方法:NO似乎没有任何问题,显然没有推动画.
另一种解决方案是在Master中设置一个布尔值,在调用push方法时将其设置为false,并从Detail in Detail的viewDidAppear中将其设置为true.这样,您可以在调用push方法时检查该值.缺点:如果您尝试快速选择同一行,tableView可能会显得滞后,如果您快速选择另一行然后它不会显示在详细信息中但它将在主表视图中被选中并突出显示,您可以保存所选行的索引并更改代码中的选择,但这会导致闪烁的行突出显示.
这两个解决方案都有一些妥协,所以我想找到另一种处理方法.还有更好的解决方案吗?
我正在使用SWRevealViewController(更新版本)制作滑出式侧边栏菜单应用,
连接不同的后视控制器(基于不同的侧边栏单元)
SWRevealViewControllerSeguePushController class segue.
每次我点击一个与当前不同的单元格
侧边栏变得完全显露,然后新的后视控制器被推入
右边.
看起来旧的后部vc首先向右移动(完全不可见),然后新的移动
向左显示全屏.
这看起来并不顺利,我希望看起来我总是使用相同的视图控制器
不同的细胞轻拍,后面的vc 至少可以看到它的一部分.
有什么方法可以修改原始动画设置吗?
提前致谢!
animation sidebar pushviewcontroller ios swrevealviewcontroller
我有一个UITabBarController,所有其他视图控制器都连接到它.现在我想将我的控制器显示为:
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc: ViewController = storyboard.instantiateViewControllerWithIdentifier("ViewController") as! ViewController
Run Code Online (Sandbox Code Playgroud)
但是当我试图:
let rootViewController = self.window?.rootViewController as! UINavigationController
rootViewController.pushViewController(vc, animated: true)
Run Code Online (Sandbox Code Playgroud)
它给了我下一个错误:
Could not cast value of type 'UITabBarController' (0x1a899b818) to 'UINavigationController'
Run Code Online (Sandbox Code Playgroud)
后来我试着这样做:
let rootViewController = self.window?.rootViewController as! UITabBarController
Run Code Online (Sandbox Code Playgroud)
但是在这种情况下我得到了
UITabBar has no member pushViewController
Run Code Online (Sandbox Code Playgroud)
如何显示/推送我的ViewController,以便它与UINavigationBar一起显示在UITabBar中?
在我的应用程序中,我使用导航控制器在不同的视图之间切换.我的每个视图都有一个背景图像,但当我从一个视图到另一个视图时,在转换时会在它们之间出现一点点白色.有办法改变吗?
在Table View类中,我在viewDidLoad中有这个:
UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"parchment.png"]];
self.tableView.backgroundColor = [UIColor clearColor];
self.tableView.backgroundView = imageView;
[imageView release];
Run Code Online (Sandbox Code Playgroud)
在详细视图中,我只有HTML的标准加载请求.HTML本身将羊皮纸的代码作为背景图像.这是他们的样子:


但是,从细节视图回到表格视图,我得到了这个:

这个问题以前曾被问过,但我还没有找到我的问题的答案。它只是一个简单的表格,其中包含单元格,单击时将视图控制器推送到导航堆栈上:
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
DetailViewController *dvc = [[DetailViewController alloc] init];
[self.navigationController pushViewController:dvc animated:YES];
}
Run Code Online (Sandbox Code Playgroud)
做了很多次都没有问题,但这一次,它在中途停下来,而且还有一种奇怪的灰色来来去去。我已经检查过,没有为背景设置颜色,而且新的 VC 中还没有任何代码,因此加载太多代码不是问题。我看过,有些人也遇到了同样的问题,有人甚至贴出了问题的 Gif:
UINavigationController PushViewController 中途暂停/冻结
这是苹果的错误吗?
谢谢
xcode objective-c uinavigationcontroller pushviewcontroller ios
我目前有视图控制器 A 和视图控制器 B。
按下按钮时,视图控制器 A 将 vc B 推到它的 navigationController 上:
navigationController?.pushViewController(viewControllerB, animated: true)
VC A 有一个导航栏,上面有一个标题“View Controller A Title”
我希望VC B 有一个左按钮,它是一个后退按钮和一个标题,“视图控制器 B 标题”
目前,当我将 VC B 推到导航控制器上时,VC A 的标题与它一起出现在左后箭头上,所以它看起来像
< View Controller A Title View Controller B Title
我如何摆脱 VC A 标题?
我试过设置左栏按钮项,后栏按钮项,但都没有成功。
我发现删除该标题的唯一方法是
navigationController?.navigationBar.items?.forEach({ $0.title = "" }) 在 VC B 的 viewDidLoad 内部,但是当我单击后退箭头时,VC A 中当然缺少标题
我为上面列出的这个解决方案找到的唯一解决方案是在 VC A 的 viewDidAppear 中设置 navigationItem.title,但是从标题实际显示大约有 1/2 秒的延迟,这并不理想。
有没有更好的方法让这个标题不与导航左栏项目一起出现?
先感谢您!
uinavigationcontroller uibarbuttonitem pushviewcontroller navigationbar swift
ios ×7
iphone ×3
xcode ×3
objective-c ×2
swift ×2
animation ×1
image ×1
ios6 ×1
ios7 ×1
sidebar ×1
sigabrt ×1
storyboard ×1
tabbar ×1
transition ×1
uitableview ×1