###前提・実現したいこと
ボタンを押すと時刻応じて一番近いバスの時刻が出るのですが、2枚目のviewcontroleerにrefleshcontrolを使って、更新させる仕様にしているのですが更新してもバスの時刻の結果が変わりません。
###該当のソースコード
swift
1//一つ目のviewcontroller 2class ViewController: UIViewController { 3 //画面から戻ってきたときの処理 4 @IBAction func backToTop(segue: UIStoryboardSegue) { 5 } 6 7 //受け渡す際に使う配列の変数 8 var ukewatasu:String = "" 9 10 //スクールバス四条畷行きの結果をJikokuViewControllerに渡す処理 11 //画面遷移時の処理 12 13 14 override func viewDidLoad() { 15 16 super.viewDidLoad() 17 // Do any additional setup after loading the view, typically from a nib. 18 } 19 20 override func didReceiveMemoryWarning() { 21 super.didReceiveMemoryWarning() 22 // Dispose of any resources that can be recreated. 23 } 24 override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 25 if(segue.identifier == "gojikoku") { 26 let jvc: JikokuViewController = (segue.destination as? JikokuViewController)! 27 // ukewatasu = String(describing: result()) 28 if ukewatasu == result() { 29 ukewatasu = result() 30 } else if ukewatasu == result2() { 31 ukewatasu = result2() 32 } else if ukewatasu == result3() { 33 ukewatasu = result3() 34 } else if ukewatasu == result4() { 35 ukewatasu = result4() 36 } else if ukewatasu == result5() { 37 ukewatasu = result5() 38 } else if ukewatasu == result6() { 39 ukewatasu = result6() 40 } 41 jvc.a = ukewatasu 42 } 43 } 44 45 @IBAction func sbSijyou(_ sender: AnyObject) { 46 //result関数を受け取る 47 ukewatasu = result() 48 //performSegue(withIdentifier: "gojikoku",sender: nil) 49 } 50 @IBAction func sbNeyagawa(_ sender: AnyObject) { 51 ukewatasu = result2() 52 53 } 54 @IBAction func kintetuSijyoudentu(_ sender: AnyObject) { 55 ukewatasu = result3() 56 } 57 58 @IBAction func kintetuSijyou(_ sender: AnyObject) { 59 ukewatasu = result4() 60 } 61 62 @IBAction func kintetuKiyotaki(_ sender: AnyObject) { 63 ukewatasu = result5() 64 } 65 66 67 @IBAction func kintetuKiyotaki2(_ sender: AnyObject) { 68 ukewatasu = result6() 69 } 70 71 //スクールバス四条畷 72 func result() -> String { 73 74 let timeFormatter = DateFormatter() 75 timeFormatter.dateFormat = "HH:mm:ss" 76 let nowString = timeFormatter.string(from: NSDate() as Date) 77 let nowTime = timeFormatter.date(from: nowString)! 78 let jikokuArray: [(String, String)] = [("次のバス発車時刻 AM","9:10:00"),("次のバス発車時刻 AM","9:50:00"),("次のバス発車時刻 AM","10:10:00"),("次のバス発車時刻 AM","10:50:00"),("次のバス発車時刻 AM","11:10:00"),("次のバス発車時刻 AM","11:30:00"),("次のバス発車時刻 AM","11:50:00"),("次のバス発車時刻 PM","12:10:00"),("次のバス発車時刻 PM","12:50:00"),("次のバス発車時刻 PM","13:10:00"),("次のバス発車時刻 PM","14:10:00"),("次のバス発車時刻 PM","15:10:00"),("次のバス発車時刻 PM","15:20:00"),("次のバス発車時刻 PM","15:50:00"),("次のバス発車時刻 PM","16:05:00"),("次のバス発車時刻 PM","16:42:00"),("次のバス発車時刻 PM","16:50:00"),("次のバス発車時刻 PM","16:55:00"),("次のバス発車時刻 PM","17:00:00"),("次のバス発車時刻 PM","17:05:00"),("次のバス発車時刻 PM","17:50:00"),("次のバス発車時刻 PM","18:05:00"),("次のバス発車時刻 PM","18:35:00"),("次のバス発車時刻 PM","18:50:00"),("次のバス発車時刻 PM","19:05:00"),("次のバス発車時刻 PM","19:35:00"),("次のバス発車時刻 PM","19:50:00"),("次のバス発車時刻 PM","20:05:00"),("次のバス発車時刻 PM","20:35:00"),("次のバス発車時刻 PM","21:05:00") ] 79 80 81 let resultArray: [(String, String)] = jikokuArray.flatMap({ 82 let diff = timeFormatter.date(from: $0.1) 83 return nowTime.timeIntervalSince(diff ?? nowTime) > 0 ? nil : $0 84 }) 85 86 if resultArray.count > 0, let result = resultArray.first { 87 return "\(result.0):\(result.1)" 88 } else { 89 return "本日のダイヤは終了しました。" 90 } 91 } 92} 93 94//2つ目のviewcontroller 95class JikokuViewController: UIViewController { 96 //60分の秒ごとにタイマーが更新されるプログラム 97 98 var dateFormatter: DateFormatter{ 99 let formatter = DateFormatter() 100 formatter.dateFormat = "yyyy/MM/dd HH:mm:ss" 101 return formatter 102 } 103 104 //受け取る 105 var a:String = "" 106 107 var refreshControl:UIRefreshControl! 108 109 override func viewDidLoad() { 110 super.viewDidLoad() 111 112 113 self.refreshControl = UIRefreshControl() 114 self.refreshControl.attributedTitle = NSAttributedString(string: "引っ張って更新") 115 self.refreshControl.addTarget(self, action: "refresh", for: UIControlEvents.valueChanged) 116 self.tableView.addSubview(refreshControl) 117 118 view.addSubview(timerLabel) 119 120 // 初回 121 updateDateLabel() 122 123 // 一定間隔で実行 124 Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(JikokuViewController.updateDateLabel), userInfo: nil, repeats: true) 125 126 //labelに時刻を表示 127 jikokuLabel.text = a 128 129 // Do any additional setup after loading the view. 130 } 131 132 override func didReceiveMemoryWarning() { 133 super.didReceiveMemoryWarning() 134 // Dispose of any resources that can be recreated. 135 } 136 137 // 日時表示ラベル更新メソッド 138 func updateDateLabel(){ 139 let now = NSDate() 140 timerLabel.text = dateFormatter.string(from: now as Date) 141 } 142 143 func refresh() 144 { 145 146 ViewController() 147 JikokuViewController() 148 jikokuLabel.text = a 149 refreshControl.endRefreshing() 150 } 151 152 @IBOutlet weak var jikokuLabel: UILabel! 153 @IBOutlet weak var timerLabel: UILabel! 154 @IBOutlet weak var tableView: UITableView! 155}
###試したこと
viewcontrollerと時刻の結果を渡す変数ukewatasuも更新の処理をさせるfunc refleshに記述したのですが、動きませんでした。なぜでしょうか。
###補足情報(言語/FW/ツール等のバージョンなど)
swift3.0
xcode8.0
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/12/12 08:06