ios - 如何快速将数组传递给另一个 View Controller ?
<p><p>我环顾四周寻找一个很好的例子,说明如何传递在 1 个 ViewController 中创建和填充的数组,并通过模态 segue 将其传递给另一个。</p>
<p>这是我的 Storyboard</p>
<p> <a href="http://i.stack.imgur.com/3bvO2.jpg" rel="noreferrer noopener nofollow">see here</a> </p>
<p>用户单击历史按钮,它会弹出打开模态 TableViewController 。然后用从原始 View 发送或传递的数组的内容填充表格 View 。</p>
<p>当我在目标 ViewController 中打印数组的内容时,它是空的。所以我认为它的初始化方式存在问题。</p>
<p>这是我目前的代码</p>
<p>这是第一个 UIViewController </p>
<pre><code>//UIPickerView BarButtonItem done button actions here
func donePicker() {
txtHeight.resignFirstResponder()
var feet = Int(item1.componentsSeparatedByString(" "))!
let inches = Int(item2.componentsSeparatedByString(" "))!
feet *= 12
let totalInches = feet + inches
totalHeightValues.append(totalInches)
print(totalHeightValues)
txtHeight.text = ""
let alertController = UIAlertController(title: "\(feet / 12) ft" + " " + "\(inches) in", message: "Entry Sucessfully Added", preferredStyle: UIAlertControllerStyle.Alert)
alertController.addAction(UIAlertAction(title: "Ok", style: UIAlertActionStyle.Default,handler: nil))
self.presentViewController(alertController, animated: true, completion: nil)
}
//UIPickerView BarButtonItem cancel button actions here
func cancelPicker() {
txtHeight.text = ""
txtHeight.resignFirstResponder()
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if (segue.identifier == "showHistory") {
let dVC = (segue.destinationViewController as! HistoryTableViewController)
dVC.totalHeightValuesDest = totalHeightValues
}
}
</code></pre>
<p>这里是目标或第二个 tableviewcontroller</p>
<pre><code>import UIKit
class HistoryTableViewController: UITableViewController {
@IBAction func btnExit(sender: AnyObject) {
dismissViewControllerAnimated(true, completion: nil)
}
var totalHeightValuesDest: = []
override func viewDidLoad() {
super.viewDidLoad()
print(totalHeightValuesDest)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
// MARK: - Table view data source
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return totalHeightValuesDest.count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath)
cell.textLabel?.text = "\(totalHeightValuesDest)"
return cell
}
</code></pre></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><ol>
<li>在目的地(HistoryTableViewController)中创建一个数组属性。</li>
<li>在 <code>prepareForSeque</code> 的第一个 ViewController 中,将属性分配给您当前拥有的数组。</li>
<li>继续转场</li>
</ol>
<p>在第 2 步中,在 <code>dVC.totalHeightValuesDest = totalHeightValues</code> 之后,添加以下内容:
<code>dVC.myNewArrayProperty = myCurrentArrayOfHistoryObjects</code>。显然,您将在 HistoryViewController 和当前 myCurrentArrayOfHistoryObjects 中创建的属性名称替换为您拥有的本地数组变量的名称。</p>
<p>确保正确地转换destinationViewController(首先是UINavigationController,然后调用topViewController 来访问你的HistoryViewController)。</p></p>
<p style="font-size: 20px;">关于ios - 如何快速将数组传递给另一个 ViewController ?,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/37633599/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/37633599/
</a>
</p>
页:
[1]