我有两个ViewControllers。当我按下FirstViewController上的按钮时,SecondViewController出现。当我按下SecondViewController上的按钮时,FirstViewController再次出现。问题是,FirstViewController上的View不会再次加载。 ViewDidLoad循环不会再次加载。 我想创建一个循环,它会在FirstViewController出现时每次检查一个变量。
答案 0 :(得分:1)
viewDidLoad
仅在视图首次加载时调用。听起来您正在寻找viewDidAppear
(或viewWillAppear
)方法,该方法在每次查看(viewDidAppear
)或即将出现(viewWillAppear
)时都会调用。
所以你可能正在寻找这些方法中的任何一种。您可能需要查看this page上的图表以获取更多信息
答案 1 :(得分:0)
将该代码放入viewDidAppear
或viewWillAppear
。
答案 2 :(得分:0)
UIViewController
的实例添加到Navgation Stack
时,ViewDidLoad 方法调用。
我认为您已经了解Navigation Stack
。
当您从FirstViewController
显示SecondViewController
时,表示您从两种可能的方式做了一件事
1。 SecondViewController
来自Navigation Stack
的{{1}} ViewDidLoad
FirstViewController
FirstViewController
永远不会打电话,因为ViewDidAppear
已加载记忆。在这种情况下,ViewWillAppear
和FirstViewController
将会执行。因为只要视图出现在屏幕上,这些方法就会一直调用。
2。您在SecondViewController
上创建了FirstViewController
的另一个实例,并在Navigation Stack
上推送FirstViewController
的实例。这样,将添加ViewDidLoad
的新实例,并自动调用FirstViewController
。并且将自动创建SecondViewController
和ViewDidLoad
的循环。
希望你现在明白为什么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()
方法永远不会召唤你。