标签: segue

有没有办法避免在每个segue之后调用viewDidLoad?

我在我的主ViewController中初始化表,数据等.对于更多设置,我想调用另一个Viewcontroller:

 DateChangeController *theController = [self.storyboard instantiateViewControllerWithIdentifier:@"dateChangeController"];
[self presentViewController:theController animated:YES completion:^{NSLog(@"View controller presented.");}];
Run Code Online (Sandbox Code Playgroud)

然后一些点击我返回一个segue(自定义:)

NSLog(@"Scroll to Ticket");
[self.sourceViewController presentModalViewController:self.destinationViewController animated:YES];
Run Code Online (Sandbox Code Playgroud)

我的问题:

在返回到我的主ViewController之后,调用了viewDidLoad(每次).我读到,ARC在"转到"另一个ViewController并调用viewDidUnload方法后释放我的mainView,但是我想保留我的所有数据和表格一开始..

有解决方案吗 非常感谢你!

iphone storyboard viewdidload segue

2
推荐指数
1
解决办法
2010
查看次数

Swift - UIStoryboardSegue 以编程方式弹出 ViewController

我以编程方式将 UIButton 附加到导航栏:

catButton.addTarget(self, action: "oc:", forControlEvents: .TouchUpInside)
var catBarButton:UIBarButtonItem = UIBarButtonItem(customView: catButton)
self.navigationItem.setRightBarButtonItem(catBarButton, animated: false)
Run Code Online (Sandbox Code Playgroud)

当函数 oc() 被触发时,我想弹出视图控制器

let segue = UIStoryboardSegue(identifier: "oc", source: self, destination: MDComDBCatsTVC())
prepareForSegue(segue, sender: but)
Run Code Online (Sandbox Code Playgroud)

但这不会打开 MDComDBCatsTVC .. 如何以编程方式执行此操作,因为我无法从故事板中的按钮拖动,因为我的按钮是以编程方式添加的

popup storyboard segue swift

2
推荐指数
1
解决办法
7949
查看次数

Unwind Segue - 在哪里拖动退出?

我试图了解展开转场是如何工作的。首先我创建了 3 个 ViewController。

GlobalVC
 -LoginVC
 -RegisterVC 
Run Code Online (Sandbox Code Playgroud)

我将初始页面设置为 GlobalVC(只有经过身份验证的用户才能看到)。我设置了一个segue:

GlobalVC to LoginVC打电话globalToLoginLoginVC to RegisterVC打电话loginToRegister。这是我的故事板:

在此输入图像描述

对于 registerToLogin 方向,我使用了这个解决方法(在 RegisterVC 中),但看起来有点难看。

@IBAction func unwindToLogin(sender: AnyObject) {
    //Dismiss View
    dismissViewControllerAnimated(true, completion: nil)
}
Run Code Online (Sandbox Code Playgroud)

然而,现在我试图直接从LoginToGlobal

首先,我选择登录按钮,将其拖到 LoginVC:

@IBAction func loginButton(segue: UIStoryboardSegue) {
    performSegueWithIdentifier("unwindToGlobal", sender: self)
}
Run Code Online (Sandbox Code Playgroud)

设置好后segue: UIStoryboardSegue,现在就可以右键退出了。但是,我在这里感到困惑。无论我尝试将 Exit 内的圆圈拖动到什么位置,都会出现错误:

由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,>原因:“接收器(0x7fdd2068a480>)没有标识符为“unwindToGlobal”的segue

我应该将圆圈拖到哪里?(我一直看到Unwind segue to 'Exit'

在此输入图像描述

xcode ios segue swift unwind-segue

2
推荐指数
1
解决办法
1770
查看次数

Swift让属性通过prepareForSegue设置

在Objective-C中,我可以非常轻松地将属性添加到.h文件中......

@property (nonatomic, strong) Person *person;
Run Code Online (Sandbox Code Playgroud)

然后在此期间设置此属性prepareForSegue:withIdentifier:.

在此示例中,视图控制器的类是PersonViewController.它旨在显示有关特定Person对象的信息.它需要一个Person对象来显示任何东西,Person对象不会改变.显示需要并弹出并推送到其他实例的其他人PersonViewController.

对我来说,这表明在Swift中person属性应该如此定义......

let person: Person
Run Code Online (Sandbox Code Playgroud)

除了它不可能.如果我这样设置它然后它必须在init方法结束之前初始化...但是没有办法这样做,因为它正在被实例化Storyboard.

所以我能做到这一点......

var person: Person?
Run Code Online (Sandbox Code Playgroud)

除了这是错误的.在PersonViewController没有将无法正常工作person,从而使其成为可选的没有意义,并使之成为var没有意义无论是作为person不会改变.

除此之外,我还要添加......

guard let person = person else {return}
Run Code Online (Sandbox Code Playgroud)

到我需要使用该person对象的每个函数.

我可以这样做......

var person = Person()
Run Code Online (Sandbox Code Playgroud)

但这会让人感到烦躁和浪费.每当我创建视图控制器时,我现在创建然后扔掉一个Person.它也是一个var,在视图控制器的上下文中没有意义.

在属性不是可选的segue期间执行传递属性的同等事物的最佳方法是什么var,是不是在init期间创建的?

properties optional ios segue swift

2
推荐指数
1
解决办法
229
查看次数

从集合视图单元执行 Segue

import UIKit

class ActionCollectionViewCell: UICollectionViewCell {
     @IBOutlet weak var myLabel: UILabel!
     @IBOutlet weak var actionGIF: UIImageView!

     @IBAction func actionPressed(sender: AnyObject) {
         print(myLabel.text)
         Global.actionButtonIndex = myLabel.text!.toInt()! - 1
         print(actionGIF.image)
         ActionViewController.performSegueWithIdentifier("showActionPreview", sender: nil)
}
Run Code Online (Sandbox Code Playgroud)

}

我试图在用户单击集合视图中的一个单元格后执行 Segue。使用performSegueWithIdentifier 似乎无法做到这一点。应用程序截图

ios segue uicollectionview uicollectionviewcell swift

2
推荐指数
1
解决办法
5142
查看次数

禁用单个 ViewController 的后退导航

我有以下 VC:

界面生成器

中心的 VC 是“登录”屏幕,如果用户获得授权,它只是将用户重定向到选项卡栏控制器。

我想禁止从 TabBarController 中的任何 VC 返回登录 VC(使用“后退”按钮和滑动)。

如何实现这一目标?

xcode uitabbarcontroller uinavigationcontroller ios segue

2
推荐指数
1
解决办法
3164
查看次数

关闭UIAlertController后执行segue

在过去,我曾经遇到过类似的问题,即UIAlertControllerUIAlertController取消后,UI线程上总是存在滞后。
我现在的问题是,如果用户单击“确定”,我想执行顺序检查,如果按下UIAlertAction“取消”,UIAlertAction则什么也不会发生。
这是我的代码:

// create the uialertcontroller to display
let alert = UIAlertController(title: "Do you need help?",
                              message: "Would you like to look for a consultant?",
                              preferredStyle: .alert)
// add buttons
let okay = UIAlertAction(title: "Yes, please.", style: .default, handler: {_ in
    self.performSegue(withIdentifier: "segue", sender: nil)
})
let no = UIAlertAction(title: "No, I'm okay.", style: .cancel, handler: nil)
alert.addAction(okay)
alert.addAction(no)
self.present(alert, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud)

当前正在发生的是,当我点击“确定”时,segue正在执行,但是我只能看到过渡的最后时刻(即,动画在UIAlertController被关闭时开始播放)。
一旦UIAlertController解散,我如何使segue开始?

注意-如果有其他方法,我宁愿不要以骇人的方式解决此问题,例如在固定的延迟后执行segue。 …

segue swift uialertcontroller

2
推荐指数
1
解决办法
2370
查看次数

如何在保持导航栏存在的同时以模态方式呈现视图控制器。(对于设置视图控制器)

这是我正在谈论的一个例子:https : //media.giphy.com/media/3o6nUPLqKrMN64tdNm/giphy.gif许多应用程序都这样做。添加新联系人时的联系人应用程序等。但是,当我尝试以模态方式呈现我的设置页面时,导航栏消失了。知道如何解决这个问题吗?提前致谢!

xcode uinavigationbar segue uistoryboardsegue swift

2
推荐指数
1
解决办法
3519
查看次数

如果满足条件,如何在swift中返回(跳过其余的)函数

我有一个segue设置按下按钮时执行.如果当前视图控制器中的文本字段为nil,我想结束该函数并使segue无效.到目前为止没有运气.我该怎么做呢?这是我有的:

@IBAction func myButton(_ sender: Any) {
    if textField.text == nil {

        return

    } else {

    performSegue(withIdentifier: "theSegue", sender: sender)

    }
}
Run Code Online (Sandbox Code Playgroud)

提前致谢.

xcode uitextfield ibaction segue swift

2
推荐指数
1
解决办法
75
查看次数

斯威夫特是否紧密耦合?

在使用MVC的Swift中,使用一种常见的向前发送数据的方法prepare(for:sender:).在该方法中,您将获得对目标VC的引用并访问其属性以发送数据.但这不是考虑耦合视图控制器吗?我希望答案不是一个意见问题,因为我真的很想了解seggu如何适应MVC.

model-view-controller coupling segue swift

2
推荐指数
1
解决办法
63
查看次数