我有两个ViewControllers。对于第一个ViewController,它在表上显示我的Array数据。我想获取所选单元格的indexPath,并将此数据传递给另一个ViewController。
在我的第一个ViewController中
import UIKit
class ViewController: UIViewController, UITableViewDataSource {
var nameList = [NameManager]()
@IBOutlet weak var NameTable: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
NameTable.dataSource = self
GetData()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
func GetData(){
let session = NSURLSession.sharedSession()
let request = NSMutableURLRequest(URL: NSURL(string: "http://www.json-generator.com/api/json/get/bPfifKWNaq?indent=2")!)
request.HTTPMethod = "GET"
let task = session.dataTaskWithRequest(request, completionHandler: {(data, response, error) in
if let error = error {
print(error)
}
if let data = data{
do{
let resultJSON = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions())
let resultArray = resultJSON as? NSArray
for jsonObjectString in resultArray!{
let code = jsonObjectString["code"] as! String
let name = jsonObjectString["name"] as! String
let description = jsonObjectString["description"] as! String
self.nameList.append(NameManager(code: code, name: name, description: description))
}
self.nameList.count
dispatch_async(dispatch_get_main_queue(), {
self.NameTable.reloadData()
})
}catch _{
print("Received not-well-formatted JSON")
}
}
if let response = response {
let httpResponse = response as! NSHTTPURLResponse
print("response code = \(httpResponse.statusCode)")
}
})
task.resume()
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int{
let count = nameList.count
return count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{
let myCell = NameTable.dequeueReusableCellWithIdentifier("myCell", forIndexPath: indexPath) as UITableViewCell
myCell.textLabel?.text = nameList[indexPath.row].name
myCell.detailTextLabel?.text = nameList[indexPath.row].description
return myCell
}
在我的第二个ViewController中,它也是另一个类,我想捕获所选内容的indexPath。使用索引值,我搜索我的Array并将该特定对象传递给下一个类。我没有这方面的代码,因为我不知道它是如何工作的。
答案 0 :(得分:0)
您可以在类的范围之外创建属性,然后在cellForRowAtIndexPath
方法中设置该属性。可以在第二个视图控制器中访问该属性。您将需要查看tableview方法didSelectRowAtIndexPath
,因为这将是您将属性设置为已选择的单元格的位置。
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
appDelegate().index = indexPath.row
}
我做了一个非常简单的project on github,显示了在视图控制器范围之外创建属性的两种方法。一种方法是在AppDelegate
内创建一个通过单例访问的变量,另一种方法是Globals.swift文件。
希望这有帮助!
答案 1 :(得分:0)
如果你想将值传递给点击单元格后弹出的控制器,使用单例并不是一种优雅的方式。如果您使用的是故事板,那么您必须使用'准备segue'。您可以在处理传输的类中实现该方法,并在另一个视图控制器中设置所有属性。
void foo(uint64_t *dst, uint64_t *src)
{
__asm (
"movq (%[in]), %%rax\n"
"addq %%rax, (%[out])\n"
"movq 8(%[in]), %%rax\n"
"adcq %%rax, 8(%[out])\n"
"movq 16(%[in]), %%rax\n"
"addq %%rax, 16(%[out])\n"
"movq 24(%[in]), %%rax\n"
"adcq %%rax, 24(%[out])\n"
:
: [in] "r" (src), [out] "r" (dst)
: "%rax"
);
}