Tag: uistoryboardsegue

以编程方式执行展开

目前我有以下故事板: UITableViewController – > Segue – > UINavigationController – > Relationship – > UITableViewController 在最后一个UITableViewController中,我添加了一个后面的button,代码如下: navigationItem.setLeftBarButtonItem(UIBarButtonItem(title: "Back", style: UIBarButtonItemStyle.Plain, target: self, action: "unwind"), animated: true) let attributes = [NSFontAttributeName: UIFont.fontAwesomeOfSize(30), NSForegroundColorAttributeName: Constants.InterfaceColors.firstHighlightColor] as Dictionary! let unwindNavigationItem = navigationItem.leftBarButtonItem! as UIBarButtonItem unwindNavigationItem.setTitleTextAttributes(attributes, forState: .Normal) unwindNavigationItem.title = String.fontAwesomeIconWithName(FontAwesome.AngleLeft) 据我读,我必须连接文件的所有者的故事板退出。 我发现,只有在你的控制器代码中有一个如下所示的动作时,才可能这样做。 @IBAction func unwindToWeekOverview(segue: UIStoryboardSegue) { NSLog("unwind to […]

我应该如何在Xcode storyboard中链接视图控制器?

我想在xcode storyboard中链接视图控制器来达到以下效果: A→B→C→D→E→B→C→D→E→B→… 上面的字母表示单独的视图控制器(全尺寸的场景)。 当我在视图之间移动时,我想要从左到右横向滑动,我不希望或不需要保留之前视图的状态(即不推动或模态轮播)。 我确实需要在视图之间转移一些状态。 有关如何使用故事板编辑器,代码或二者的某种组合来实现最佳效果的build议?

Receiver没有标识符“***”

我第一次遇到这个问题。 我检查了堆栈溢出类似的问题,但没有解决scheme可以解决我的问题,所以我有这个post。 到目前为止,我有两个视图controllers (让我们说A和B),我试图用一个名为“toB”的segue连接它们。 当我运行这个程序的时候,Xcode告诉我Receiver(B) has no segue with identifier "toB" 。 我很确定storyboard和代码中identifier的拼写完全相同。 并且segue的线连接了A view controller和B view controller 。 但两个视图controllers的storyboard ID是不同的。 这是问题吗? 希望有人能帮助我。 提前致谢! 解 感谢@Amit Shelgaonkar的提示! 在我的情况下,移动performSegueWithIdentifier viewDidAppear仍然无法正常工作,但将其移动到applicationWillEnterForeground解决问题! 我仍然不知道为什么它不起作用,因为当我试图开发一个testing应用程序,并把performSegueWithIdentifier放在viewDidAppear ,它完美的作品。

在自定义过渡过程中,视图的导航栏项目被错位

我有一个自定义的segue使用UIViewAnimationOptionTransitionFlipFromLeft在视图之间转换。 当新视图出现在屏幕上时,由导航栏元素从左alignment状态跳转到适当位置导致短暂但可辨别的“眨眼”。 以下是转换结束时截图: 您可以看到标题和两个栏button项目左alignment; 完全不在他们最终会rest的地方。 以下是转换完成后截图的截图: 这里的button和标题正确定位。 在第一张和第二张图像之间的瞬间,图标闪烁到位。 该视图是在故事板中设置的。 该视图不是UINavigationController层次结构的一部分,因此导航栏及其项目通过属性检查器“Simulated Metrics” – >“Top Bar:半透明导航栏”在视图上手动创build。 如何强制导航栏项目在转换过程中首次出现时正确定位? 先谢谢你! 🙂

为什么在requestAccessToEntity中使用performSegueWithIdentifier时使用dispatch_async:完成?

当我在完成块中调用performSegueWithIdentifier时,如果我不把这个调用包装在dispatch_async中,实际上需要10秒的时间。 但是,我可以做其他事情,而不用包装在同一个dispatch_async中,比如做核心数据工作,或者logging“事物”… 任何有关这如何工作的见解,为什么…我迷路了。 如果这不是问这个问题的地方,我很抱歉。 EKEventStore *store = [[EKEventStore alloc] init]; [store requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) { dispatch_async(dispatch_get_main_queue(), ^{ [self performSegueWithIdentifier:self.phaseSegue sender:self]; }); }];

embedded在两个独立容器控制器中的视图之间实现委托

我的故事板的相关部分如下所示: 您可以看到自定义的“容器控制器”视图包含两个容器视图,一个通过embedded式Segue链接到导航控制器,另一个通过embedded式Segue链接到自定义“主视图控制器”(实现表视图控制器)。 导航控制器组件还与定制“位置filter控制器”具有关系。 我需要实现委派,这样当位置filter控制器中的一个UISteppers是incr./decr时,Master View Controller中的表视图就知道要相应地更新显示的数据。 我并不习惯于与协议/代表合作,但是这种在不同意见之间进行交谈的独特情况实际上欺骗了我! 大多数情况下,我已经成功地遵循这里的例子: 在视图控制器之间传递数据 。 然而,在这种情况下,我不能直接链接实例化视图,因为他指出要在“传回数据”步骤6中进行操作。 我曾经考虑过使用一个singleton对象,从这些对象中,每个视图都可以获取/设置必要的数据,但是这里的问题是,table view不一定知道什么时候更新它的内容,尽pipe有数据可以更新/更新。 这里是一个来自ContainerController.m的代码片段,我在这里设置embedded的segues来运行: – (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { DataHold *data = [[DataHold alloc] init]; // <– this actually is a singleton object if([segue.identifier isEqualToString:@"locationEmbedSegue"]) { } else if([segue.identifier isEqualToString:@"tableEmbedSegue"]) { [[segue destinationViewController] setDelegate:data.detailTableViewController]; // ^ This part actually sets up a delegate so that […]

在故事板中将Segue自动拖拽到Self中

我想从我的viewcontroller,自己拖动segue。 所以我可以推动那个特定的视图控制器的“无限”的实例。 我知道如何在代码中做到这一点(即以编程方式instan的视图控制器)。 不过,我想尽可能使用segues。 我在故事板上发现了几个“黑客”,但我不喜欢黑客,所以我的问题是, 有没有一个干净的方式让故事板中的自我回到自我? 我不想从一个button或这样的拖动它,我只想要一个通用的segue,我可以使用: [self performSegueWithIdentifier:@"segueIdentifier"] 谢谢。

'Receiver(<ViewController:>)没有标识符'infoseg'

最近我的应用程序正在粉碎,当应用程序切换到下一个ViewController。 这是prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender ShowInfoViewController *secondViewController = (ShowInfoViewController *)segue.destinationViewController; 这就是我所说的方法: [self performSegueWithIdentifier:@"infoseg" sender:self]; 在界面生成器中,我也有一个具有相同标识符的segue。 任何想法? 这是日志的打印: Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Receiver (<ViewController: 0x1dda97d0>) has no segue with identifier 'infoseg'' *第一掷调用堆栈:(0x322982a3 0x31a6a97f 0x34fdbca9 0x1972f 0x1a7fb 0x57d73 0x56ff3 0x5a2f3 0x372c2ef5 0x372029f1 0x3720290d 0x355115df 0x35510ccb 0x35539133 0x321de74d 0x35539593 0x3549d15d 0x3226d683 0x3226cee9 0x3226bcb7 0x321deebd 0x321ded49 […]

ViewController出现两次转换

问题摘要 我的主VC – >第二个VC转换似乎运行两次。 但奇怪的是,第二个VC的viewDidLoad只运行一次。 这是我的项目中唯一存在这个问题的过渡。 我研究了这一点,发现加载两次的问题,但没有一个匹配我的过渡两次,但加载一次的情况。 常见问题,例如某人在故事板中添加了两个段落,不会出现在我的项目中: 在我的第一个/根视图控制器(称为mainVC)中,我以编程方式在viewDidLoad中添加边缘平移手势: let panLeftEdgeGesture_MainVC = UIScreenEdgePanGestureRecognizer(target: self, action: "panLeftEdge_toLifeList:") panLeftEdgeGesture_MainVC.edges = .Left view.addGestureRecognizer(panLeftEdgeGesture_MainVC) 当用户滑动这个平移手势时,它会触发一个函数来调用我的下一个VC的继续。 问题是,VC转换出现两次,然后一切正常。 没有什么打破或崩溃。 如果我点击我的自定义后退button,退回到mainVC只会出现一次。 对原因进行实验 这是一个奇怪的部分:为了理解什么是理解的,我插入了一些println代码,这里是控制台打印的内容: No matching prepareForSegue: So did nothing to prepare. LifeList_CollectionView viewDidLoad did run Pan segue from mainVC to Life Lists did run No matching prepareForSegue: So did nothing to prepare. […]

有条件的从UITableView到基于对象状态的DetailView

我已经创build了我的向下钻取表的Xcode storyboard来分支到两个细节视图。 我希望它根据我在表格视图中点击的预算对象的状态继续执行。 如果预算对象没有被初始化,我想继续到初始化视图。 如果它已被初始化,我希望它继续到详细视图。 到目前为止,这是我有… – (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { /* When a row is selected, the segue creates the detail view controller as the destination. Set the detail view controller's detail item to the item associated with the selected row. */ if ([[segue identifier] isEqualToString:@"showDetailsOfBudget"]) { NSIndexPath *indexPath = [self.budgetsTable indexPathForSelectedRow]; BudgetDetailsViewController *detailsViewController […]