Xcode Swift ViewDidLoad

时间:2017-10-02 07:46:05

标签: swift xcode viewdidload

我有两个ViewControllers。当我按下FirstViewController上的按钮时,SecondViewController出现。当我按下SecondViewController上的按钮时,FirstViewController再次出现。问题是,FirstViewController上的View不会再次加载。 ViewDidLoad循环不会再次加载。 我想创建一个循环,它会在FirstViewController出现时每次检查一个变量。

3 个答案:

答案 0 :(得分:1)

viewDidLoad仅在视图首次加载时调用。听起来您正在寻找viewDidAppear(或viewWillAppear)方法,该方法在每次查看(viewDidAppear)或即将出现(viewWillAppear)时都会调用。

所以你可能正在寻找这些方法中的任何一种。您可能需要查看this page上的图表以获取更多信息

答案 1 :(得分:0)

将该代码放入viewDidAppearviewWillAppear

答案 2 :(得分:0)

UIViewController的实例添加到Navgation Stack时,

ViewDidLoad 方法调用。

我认为您已经了解Navigation Stack

当您从FirstViewController显示SecondViewController时,表示您从两种可能的方式做了一件事

1。 SecondViewController来自Navigation Stack的{​​{1}} ViewDidLoad FirstViewController FirstViewController永远不会打电话,因为ViewDidAppear已加载记忆。在这种情况下,ViewWillAppearFirstViewController将会执行。因为只要视图出现在屏幕上,这些方法就会一直调用。

2。您在SecondViewController上创建了FirstViewController的另一个实例,并在Navigation Stack上推送FirstViewController的实例。这样,将添加ViewDidLoad的新实例,并自动调用FirstViewController。并且将自动创建SecondViewControllerViewDidLoad的循环。

希望你现在明白为什么val spark = SparkSession.builder().master("local").appName("Fuzzy Match Analysis").config("spark.sql.warehouse.dir","file:///tmp/spark-warehouse").getOrCreate() import spark.implicits._ var df = spark.read.format("jdbc") .option("url", "jdbc:mysql://127.0.0.1:3306") .option("dbtable","(select * from engine.ecl limit 1) as onerow") .option("user", "root") .option("driver", "com.mysql.jdbc.Driver") .option("password", "root") .load() 方法永远不会召唤你。