GVKun编程网logo

在没有Segues的情节提要之间传递变量-Swift

8

本文将介绍在没有Segues的情节提要之间传递变量-Swift的详细情况,。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一些关于AngularJS:如何在控制器之间

本文将介绍在没有Segues的情节提要之间传递变量-Swift的详细情况,。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一些关于AngularJS:如何在控制器之间传递变量?、AngularJS:我如何在控制器之间传递变量?、ios – Swift 2中没有关于segue的后退按钮、ios – 使用segue在View控制器之间传递变量的知识。

本文目录一览:

在没有Segues的情节提要之间传递变量-Swift

在没有Segues的情节提要之间传递变量-Swift

我在位于Xcode中两个不同.storyboard文件内的两个不同UIViewControllers之间传递数据。(这是一个很大的项目,因此我不得不将其分解为不同的故事板。)

我已经在要向其传递数据的视图中建立了一个“ exercisePassed”变量(字符串),而且我已经知道如何在位于不同情节提要中的两个视图之间移动。像这样

var storyboard = UIStoryboard(name: "IDEInterface", bundle: nil)var controller = storyboard.instantiateViewControllerWithIdentifier("IDENavController") as! UIViewController//**************************************var ex = //Stuck Hereex.exercisedPassed = "Ex1"//**************************************self.presentViewController(controller, animated: true, completion: nil)

如何不使用Segue / PrepareForSegue传递数据?

答案1

小编典典

我假设您要将数据传递到的viewController是自定义viewController。在这种情况下,请在此处使用以下修改的代码:

var storyboard = UIStoryboard(name: "IDEInterface", bundle: nil)var controller = storyboard.instantiateViewControllerWithIdentifier("IDENavController") as! MyCustomViewControllercontroller.exercisedPassed = "Ex1"self.presentViewController(controller, animated: true, completion: nil)

AngularJS:如何在控制器之间传递变量?

AngularJS:如何在控制器之间传递变量?

我有两个Angular控制器:

function Ctrl1($scope) {
    $scope.prop1 = "First";
}

function Ctrl2($scope) {
    $scope.prop2 = "Second";
    $scope.both = Ctrl1.prop1 + $scope.prop2; //This is what I would like to do ideally
}

我无法使用Ctrl1内部,Ctrl2因为它是未定义的。但是,如果我尝试像这样传递它…

function Ctrl2($scope,Ctrl1) {
    $scope.prop2 = "Second";
    $scope.both = Ctrl1.prop1 + $scope.prop2; //This is what I would like to do ideally
}

我得到一个错误。有谁知道如何做到这一点?

在做

Ctrl2.prototype = new Ctrl1();

也失败。

注意: 这些控制器彼此之间不嵌套。

AngularJS:我如何在控制器之间传递变量?

AngularJS:我如何在控制器之间传递变量?

我有两个Angular控制器:
function Ctrl1($scope) {
    $scope.prop1 = "First";
}

function Ctrl2($scope) {
    $scope.prop2 = "Second";
    $scope.both = Ctrl1.prop1 + $scope.prop2; //This is what I would like to do ideally
}

我不能在Ctrl2内使用Ctrl1,因为它是未定义的。但是,如果我试图通过它像这样…

function Ctrl2($scope,Ctrl1) {
    $scope.prop2 = "Second";
    $scope.both = Ctrl1.prop1 + $scope.prop2; //This is what I would like to do ideally
}

我得到一个错误。有谁知道如何做到这一点?

Ctrl2.prototype = new Ctrl1();

也失败。

注意:这些控制器没有嵌套在一起。

跨多个控制器共享变量的一种方法是 create a service,并将其注入任何控制器,您要使用它。

简单服务示例:

angular.module('myApp',[])
    .service('sharedProperties',function () {
        var property = 'First';

        return {
            getProperty: function () {
                return property;
            },setProperty: function(value) {
                property = value;
            }
        };
    });

在控制器中使用服务:

function Ctrl2($scope,sharedProperties) {
    $scope.prop2 = "Second";
    $scope.both = sharedProperties.getproperty() + $scope.prop2;
}

这在this blog(第2课和特别是)中描述得很好。

我发现,如果你想绑定到这些属性跨多个控制器,如果你绑定到一个对象的属性,而不是一个原始类型(布尔,字符串,数字)来保留绑定引用的工作更好。

示例:var property = {Property1:’First’};而不是var property =’First’;.

更新:(希望)使事情更清楚here is a fiddle显示了一个例子:

>绑定到共享值的静态副本(在myController1中)

>绑定到一个基元(string)
>绑定到对象的属性(保存到作用域变量)

>绑定到共享的值,更新UI的值更新(在myController2中)

>绑定到返回基元(string)的函数>绑定到对象的属性>双向绑定到对象的属性

ios – Swift 2中没有关于segue的后退按钮

ios – Swift 2中没有关于segue的后退按钮

我把我的项目移植到 Swift 2上,一切都很好 – 除了最简单的segue没有后退按钮.这是我正在使用的segue函数的准备:
override func prepareForSegue(segue: UIStoryboardSegue,sender: AnyObject?) {
    // Get the new view controller using [segue destinationViewController].
    // Pass the selected object to the new view controller.
    if segue.identifier == "showExercise" {
        if let nav = segue.destinationViewController as? UINavigationController {
            if let exercisesController = nav.topViewController as? ExercisesController {
                let cell = sender as! WorkoutCell
                if let workout = cell.name!.text {
                    exercisesController.exercises = Workouts[workout]!
                    exercisesController.navigationItem.title = workout
                }
            }
        }
    }
}

之前,父segue的后退按钮用于自动填充.现在,我得到的只是儿童导航vc中的标题

解决方法

你在使用show或show detail segue吗?看起来你正在使用模态segue. show或show segue的目标视图控制器通常是第二个视图控制器本身,而不是嵌入在另一个UINavigationController中.

如果show segue的目标视图控制器实际上是UINavigationController,则新导航控制器的导航栏设置可能会覆盖旧的导航栏设置(源视图控制器的导航控制器).尽量不要将目标视图控制器嵌入另一个UINavigationController中.

ios – 使用segue在View控制器之间传递变量

ios – 使用segue在View控制器之间传递变量

我使用 Swift和Xcode 6,并希望使用Segue从一个View Controller传递一个变量.

我创建了一个名为“MainToTimer”的段落,一旦按下按钮,它就被触发.我想在第二个View Controller上使用名为“Duration”的变量.

可以传递多个变量和常量吗?

每个View Controller需要什么代码?

先谢谢你.

解决方法

首先,将属性/属性保存在第二个视图控制器(目标)中.
class YourSecondViewController: UIViewController {
    var duration:Double?
}

然后让你的按钮触发你的自定义segue.使用您的变量(‘duration’)作为发件人的参数.

class YourFirstViewController: UIViewController {
    @IBAction func buttonTapped(sender: AnyObject) {
        self.performSegueWithIdentifier("MainToTimer",sender: duration)
    }
}

最后,通过覆盖prepareForSegue方法传递此发件人数据:

override func prepareForSegue(segue: UIStoryboardSegue!,sender: AnyObject!) {
    if (segue.identifier == "MainToTimer") {
        let secondViewController = segue.destinationViewController as YourSecondViewController
        let duration = sender as Double
        secondViewController.duration = duration
    }
}

是的,也可以使用prepareForSegue的’sender’参数传递多个变量和常量.如果您有多个要传入的数据,请将它们放入数组中,并使该数组成为发送方.

关于在没有Segues的情节提要之间传递变量-Swift的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于AngularJS:如何在控制器之间传递变量?、AngularJS:我如何在控制器之间传递变量?、ios – Swift 2中没有关于segue的后退按钮、ios – 使用segue在View控制器之间传递变量等相关知识的信息别忘了在本站进行查找喔。

本文标签: