swiftでの画面遷移で値が更新されていない状態で渡されてしまっています。
具体的に言うと、MemberViewcontrollerのString型のname1,2,3,4をViewcontrollerに引き継ぎたいのですが、引き継ぐ前に元々代入していたarama1,2,3,4が使われており、NSuserDefaultに保存していたものが代入できていません。
どうすれば良いでしょうか。
swift
1送られた先の画面のソースです 2import UIKit 3 4class ViewController: UIViewController { 5 6 @IBOutlet weak var name1: UILabel! = UILabel() 7 @IBOutlet weak var name2: UILabel! = UILabel() 8 @IBOutlet weak var name3: UILabel! = UILabel() 9 @IBOutlet weak var name4: UILabel! = UILabel() 10 let MVC = MemberViewcontroller() 11 let AddM = AddMember() 12 //var TextField:[[UITextField]] = [] 今後 13 // viewを生成 14 let keyboardView = CustomKeyboard() 15 var data = [[Int]]() 16 var name = [String]() 17 18 override func viewDidAppear(_ animated: Bool) { 19 super.viewDidAppear(animated) 20 //配列に入れた 21 TextField_player1 = [player1_1,player1_2,player1_3,player1_4,player1_5,player1_6,player1_7,player1_8] 22 TextField_player2 = [player2_1,player2_2,player2_3,player2_4,player2_5,player2_6,player2_7,player2_8] 23 TextField_player3 = [player3_1,player3_2,player3_3,player3_4,player3_5,player3_6,player3_7,player3_8] 24 TextField_player4 = [player4_1,player4_2,player4_3,player4_4,player4_5,player4_6,player4_7,player4_8] 25 26 setKeyboard(textfield: &TextField_player1, keyboardView: keyboardView) 27 setKeyboard(textfield: &TextField_player2, keyboardView: keyboardView) 28 setKeyboard(textfield: &TextField_player3, keyboardView: keyboardView) 29 setKeyboard(textfield: &TextField_player4, keyboardView: keyboardView) 30 31 //変更を受け取れるように設定 32 for i in 0 ..< TextField_player1.count { 33 TextField_player1[i].addTarget(self, action: #selector(textFieldDidChange1(_:)), for: .editingDidEnd) 34 TextField_player2[i].addTarget(self, action: #selector(textFieldDidChange2(_:)), for: .editingDidEnd) 35 TextField_player3[i].addTarget(self, action: #selector(textFieldDidChange3(_:)), for: .editingDidEnd) 36 TextField_player4[i].addTarget(self, action: #selector(textFieldDidChange4(_:)), for: .editingDidEnd) 37 } 38 print(MVC.name1) 39 print(MVC.name2) 40 print(MVC.name3) 41 print(MVC.name4) 42 name1.text! = MVC.name1 43 name2.text! = MVC.name2 44 name3.text! = MVC.name3 45 name4.text! = MVC.name4 46 print(name1.text!) 47 } 48} 49送る前の画面のソースです 50------------------------------------------------------------------------ 51import Foundation 52import UIKit 53 54class MemberViewcontroller: UITableViewController { 55 56 // テーブルビュー 57 @IBOutlet weak var tableview: UITableView! 58 59 var member_sum = 0 60 public var member:[Int] = [] 61 let cellIdentifier = "namecell" 62 let AddM = AddMember() 63 var tweets = [String]() 64 public var name1 = "arama1" 65 public var name2 = "arama2" 66 public var name3 = "arama3" 67 public var name4 = "arama4" 68 69 override func viewDidLoad() { 70 super.viewDidLoad() 71 72 // Uncomment the following line to preserve selection between presentations 73 // self.clearsSelectionOnViewWillAppear = false 74 75 // Uncomment the following line to display an Edit button in the navigation bar for this view controller. 76 // self.navigationItem.rightBarButtonItem = self.editButtonItem() 77 var i = 0 78 while(AddM.userDefaults.string(forKey: String(i)) != nil){ 79 tweets.append(AddM.userDefaults.string(forKey: String(i))!) 80 i += 1 81 } 82 /*tweets.append("name") 83 tweets.append("name2") 84 tweets.append("name3") 85 tweets.append("name4") 86 tweets.append("name5") 87 tweets.append("name6") 88 */ 89 90 ///////////////// 91 tableView.dataSource = self 92 tableView.delegate = self 93 tableView.allowsMultipleSelectionDuringEditing = true 94 95 // trueで複数選択、falseで単一選択 96 tableView.allowsMultipleSelection = true 97 98 tableView.tableFooterView = UIView(frame: .zero) 99 100 //self.view.addSubview(tableView) 101 102 } 103 /////// 104 // セルの選択が外れた時に呼び出される 105 override func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) { 106 let cell = tableView.cellForRow(at:indexPath) 107 member_sum -= 1 108 //削除したい 109 for i in 0 ..< member.count{ 110 if(member[i]/*入ってる数*/ == indexPath.row/*押されたやつ*/){ 111 member.remove(at: i) 112 print(member) 113 break 114 } 115 } 116 //member. 117 // チェックマークを外す 118 cell?.accessoryType = .none 119 } 120 //セルが選択された時 121 override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 122 print(indexPath) 123 member.append(indexPath.row) 124 member_sum += 1 125 if(member_sum == 4){ 126 //画面遷移 127 print(member) 128 //let VC = ViewController() 129 name1 = AddM.userDefaults.string(forKey: String(member[0]))! 130 name2 = AddM.userDefaults.string(forKey: String(member[1]))! 131 name3 = AddM.userDefaults.string(forKey: String(member[2]))! 132 name4 = AddM.userDefaults.string(forKey: String(member[3]))! 133 print("name1") 134 print(name1) 135 print("name2") 136 print(name2) 137 print("name3") 138 print(name3) 139 print("name4") 140 print(name4) 141 let targetViewController = self.storyboard!.instantiateViewController( withIdentifier: "main" ) 142 self.present( targetViewController, animated: true, completion: nil) 143 //prepare(for: toViewController, sender: nil) 144 } 145 //let aCell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) 146 //print() 147 } 148 149 ///////// 150 151 override func didReceiveMemoryWarning() { 152 super.didReceiveMemoryWarning() 153 // Dispose of any resources that can be recreated. 154 } 155 156 // MARK: - Table view data source 157 158 //override 159 func numberOfSectionsInTableView(tableView: UITableView) -> Int { 160 // #warning Potentially incomplete method implementation. 161 // Return the number of sections. 162 return 1 163 } 164 //セルの数を返す 165 override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 166 return tweets.count 167 } 168 //セルの生成 169 override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 170 let aCell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) 171 let cell = aCell 172 cell.textLabel?.text = tweets[indexPath.row] 173 cell.frame = CGRect(x: 0, y: 0, width: 150, height: 750) 174 return cell 175 } 176 177 override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 178 return 50.0 179 } 180 override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 181 print("prepare") 182 let VC = segue.destination as! ViewController 183 VC.name1.text = "arama" 184 VC.name2.text = "arama2" 185 VC.name3.text = "arama3" 186 VC.name4.text = "arama4" 187 188 /*if segue.identifier == "graph" { 189 let secondViewController = segue.destination as! GraphViewController 190 secondViewController.aaaaa = aaa 191 }*/ 192 } 193 @IBAction func pushCellButton(sender: UIButton) { 194 let cell = sender.superview?.superview as! UITableViewCell 195 guard let row = self.tableView.indexPath(for: cell)?.row else { 196 197 return 198 } 199 print(row) 200 } 201} 202