Tag: segue

我怎样才能解除一个模式segue,然后执行push segue到新的视图控制器

我试图从navigation controller执行一个push segue ,解散之前在navigation controller上显示的modal 。 内部模态( UIViewController ): func textFieldShouldReturn(textField: UITextField) -> Bool { var searchNav = SearchNavigationController() self.dismissViewControllerAnimated(true, completion: {searchNav.goToNextView()}) return true } 在SearchNavigationController里面: func goToNextView() { performSegueWithIdentifier("searchNavigationToNextView", sender: self) } 问题是,当我打回来,我得到这个错误: 终止应用程序由于未捕获的exception“NSInvalidArgumentException”,原因:“Receiver()没有与标识符searchNavigationToNextView” segue出现在我的storyboard ,从UINavigationController转到next view 。 编辑:试过这个,在_SendSelectViewController中声明_sender var _sender = self并没有工作。 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { if segue.identifier == "searchNavigationToSingleSearch" […]

在导航控制器中出现问题

我想离开初始视图控制器,并进入空白视图控制器。 这很好,但这会使空视图控制器也是导航控制器的一部分,这不是我想要的。 我想离开视图控制器。 在视图控制器中,我试图从中抽出,它自己popup,当我尝试在视图中显示目标视图控制器的方法时, self.navigationController?.topViewController返回自身,但self.navigationController?.popViewControllerAnimated(animated)不起作用

Modal Segue链

我有一个iOS应用程序,有一个login视图( LognnViewController ),一旦用户成功通过validation,他们被带到另一个视图( DetailEntryViewController )input一些简单的细节。 一旦input详细信息,用户将转到由包含各种其他视图的选项卡控制器( TabViewController )组成的应用程序的主要部分。 LogInViewController对DetailEntryViewController执行一个模式DetailEntryViewController ,然后DetailEntryViewController执行一个模式inheritance到TabViewController,所以我有一种模态inheritance链将进入应用程序。 当用户注销时,我想一直回到LogInViewController,但是当我做一个: [self.presentingViewController dismissModalViewControllerAnimated:YES]; …它popupTabViewController,我最终回到DetailEntryViewController而不是第一个LogInViewController。 有什么办法可以很容易地弹回到第一个视图控制器,或者做这种模式的连锁事情阻止我。 我有一个明智的想法,把一些代码在DetailEntryViewController viewWillAppear :如果用户已经注销,但会显示调用解除模式控制器不允许在viewWillAppear : viewDidLoad :等自动popup本身。 任何想法如何做到这一点?

有条件地用UINavigatonController在iOS 5应用程序中跳过一个UIViewController

在我们的iOS应用程序中,有三个UIViewController一个接一个,我们想跳过中间的一个条件,直接从第一个到第三个。 但是,用户应该能够通过第三个控制器上的“返回”button回到第二个。 我试过[self performSegueWithIdentifier:@"segueId" sender:sender]; 从viewDidLoad , viewWillAppear但这会破坏导航栏,如debugging日志所示。 从viewDidAppear调用此代码工作正常,但第二个视图已经显示,这正是我想要避免的第一个地方。 我也试过[self.navigationController pushViewController:vc animated:NO]; 但结果是同样损坏的导航栏,即使这次debugging日志没有这样的条目。 这样做的支持方式是什么(如果可能的话)? 目标是使用iOS 5.1的iPhone4,开发环境是Xcode 4.3。

认定animation类似于在iOS 7中打开应用程序:viewcontroller框架不能resize

我愿意创build一个类似于在iOS 7中打开应用程序的segueanimation。现在我考虑这种方法: 非segue的实现 ,但遇到了一个问题:如果在自定义segue中实现,代码无法调整viewcontroller的框架,这是主animation的一部分。 正如我所看到的,它适用于viewcontroller的位置,但不能改变它的大小。 我是否正确,该属性viewcontroller.view.frame不能animation,必须保持不变,等于设备的屏幕大小? 我已经实现了与CGAffineTransformMakeScale类似的东西,但它CGAffineTransformMakeScale ,所以,我正在寻找更好的解决scheme。 下面我粘贴我用于segue的代码。 #import "ZoomSegue.h" #import "MiniMapViewController.h" #import "InteractiveMapViewController.h" @implementation ZoomSegue – (void)perform { InteractiveMapViewController *sourceViewController = self.sourceViewController; MiniMapViewController *destinationViewController = self.destinationViewController; destinationViewController.view.alpha = 0.0f; destinationViewController.view.hidden = NO; //Just to check, lets make view really small. Position it to the center we get from the segue. destinationViewController.view.frame = CGRectMake(_originatingPoint.x, […]

ViewController作为Swift中的MapView覆盖(如Google Maps应用程序用户界面)

我正在用Swift创build一个小应用程序,我想要实现以下function: – 带有几个注释的MapView – 点击其中一个注释显示一个覆盖层中的一些细节,从底部移入, 屏幕的一半 – 显示屏的上半部分仍然显示MapView。 点击地图上的closures细节 现在我读了很多关于不同的可能性。 首先,我试着用这样的东西来使用ContainerView: @IBOutlet weak var detailsContainerYPosition: NSLayoutConstraint! func mapView(mapView: MKMapView!, didSelectAnnotationView view: MKAnnotationView!) { UIView.animateWithDuration(0.3, delay: 0.0, options: UIViewAnimationOptions.CurveEaseOut, animations: { self. detailsContainerYPosition.constant = 0 self.view.layoutIfNeeded() }, completion: nil) } 问题是,viewDidLoad()方法只被触发一次,我想用它来build立详细信息页面后,将一些数据传递到控制器类。 所以接下来我玩了一个自定义的赛车,并与此相提并论: class DetailsSegue: UIStoryboardSegue { override func perform() { // Assign the source and destination […]

在Swift视图控制器之间传递数据(从TableView到DetailViewController)

我有两个文件,MyTableViewController和myViewController。 我在MyTableVIewController的TableCell上设置了UIImageView。 myViewController不包含任何东西。 我创build了一个名为ImageArray的数组,其中包含一个Images数组。 我打算在这里做的是当我点击myCableViewController中的TableCell上的图像,我想单击的图像出现在myViewController。 还有一些关于图片旁边的点击图片的描述。 我想使用myViewController为用户获取所选图像的详细信息。 override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let cell = self.tableView.dequeueReusableCellWithIdentifier("Cell") as! UITableViewCell var ImageView = cell.viewWithTag(1) as! UIImageView ImageView.image = UIImage(named: ImageArray[indexPath.row]) ImageView.contentMode = .ScaleAspectFit var TextView = cell.viewWithTag(2) as! UILabel TextView.text = ImageArray[indexPath.row] return cell } override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) […]

在Swift中使用segue之后从堆栈中删除(删除)view / viewController的正确方法

我在这里遇到了一个问题。 我正在用performSegueWithIdentifierexpression观点。 一切顺利。 问题是,作为一个testing,我只有2个viewControllers与他们的一些数据,我有两个button,调用一个segue回到另一个VC。 如果我继续执行Segue,可以清楚地看到内存使用量每两个节点上升约0.4Mb。 这告诉我视图不被删除/从视图堆栈中删除,只是使用内存。 我想知道通过使用performSegueWithIdentifier摆脱呈现其他视图的视图的正确方法(当然,在它完成呈现视图之后,否则它将不起作用)。 你能把我指向正确的方向吗? 我发现一些Objective-C代码试图做到这一点,但它是非常广泛的,我不太了解Objective-C,所以对我来说有点难以理解。 预先感谢您的帮助! 干杯! 编辑: 我正在做一个“手动延续”。 我的意思是我有两个视图控制器站在自己的angular度。 他们没有embedded任何导航VCs或类似的东西。 我正在使用“Show”types的“Adaptive Segue”。

实例化ViewControllerWithIdentifier并传递数据

我在我的应用程序中使用Storyboard ,我想将数据从一个视图传递到另一个视图。 而不是使用segues我使用instantiateViewControllerWithIdentifier 。 在这种情况下,我从我的第一个TableViewController实例化到一个NavigationController有第二个TableViewController附加,因为我需要在第二个TableViewController导航。 现在我想从我的第一个TableviewController ,根据哪一行被点击数据传递到我的第二个TableviewController 。 在这种情况下newTopViewController将是我的NavigationController但我的问题是现在如何将数据从firstTableViewController传递到第二个secondTableviewController 。 – (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { NSString *identifier = [NSString stringWithFormat:@"%@Top", [menuArray objectAtIndex:indexPath.row]]; UIViewController *newTopViewController = [self.storyboard instantiateViewControllerWithIdentifier:identifier]; }

如何在AppDelegate中执行Segue?

我正在尝试使用Storyboard完成IOS 5.1的应用程序。 基本上我在做一个保pipe箱的应用程序。 由于我使用的Dropbox SDK链接到Dropbox是在AppDelegate.m中处理的。 用户可以select从会话中取消链接,并在不同的视图控制器中重新链接。 所以每次用户链接和未链接的应用程序必须将视图从Appdelegate切换到未连接到rootviewcontroller的视图控制器 在原来的Dropbox的例子Dropbox处理过渡像下面的代码 – (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { if ([[DBSession sharedSession] handleOpenURL:url]) { if ([[DBSession sharedSession] isLinked]) { [navigationController pushViewController:rootViewController.photoViewController animated:YES]; } return YES; } return NO; } 但是,我正在使用导航控制器的故事板和任何下面的方法不工作,我把方法在评论。 – (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { if ([[DBSession sharedSession] handleOpenURL:url]) { if ([[DBSession sharedSession] isLinked]) { NSLog(@"App linked successfully!"); // […]