我设法以编程方式切换到UITableViewController。但是,是否有一种初始方法或某种性质的东西,我可以在它切换后立即运行?无论表中是否包含数据,我都希望代码能够运行。
Swift的新手,任何帮助表示赞赏。
编辑:
更具体地说,在我的主ViewController中,我这样做:
var next = self.storyboard?.instantiateViewControllerWithIdentifier("MyEvents") as! MyEvents
self.presentViewController(next, animated: true, completion: nil)
据我了解,正在推送TableViewController
然后专用于TableViewController的类:
import UIKit
class MyEvents: UITableViewController, SideBarDelegate {
var eventList = [];
var sideBar:SideBar = SideBar()
required init!(coder aDecoder: NSCoder!) {
self.init()
sideBar = SideBar(sourceView: self.view, menuItems: ["My Events","Support","Settings"])
sideBar.delegate = self }
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
return eventList.count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
return basicCellAtIndexPath(indexPath)
}
func basicCellAtIndexPath(indexPath:NSIndexPath) -> BasicCell
{
let cell = tableView.dequeueReusableCellWithIdentifier("Cell") as! BasicCell
setCellValues(cell, indexPath: indexPath)
return cell
}
func setCellValues(cell:BasicCell, indexPath:NSIndexPath)
{
cell.eventLabel.text = "Test Event"
cell.acceptLabel.text = "100"
cell.declineLabel.text = "90"
cell.acceptSubLabel.text = "Accepts"
cell.declineLabel.text = "Decline"
}
func sideBarDidSelectButtonAtIndex(index: Int)
{
if index == 0
{
println("Here!")
}
}
}
答案 0 :(得分:2)
我认为你应该在你的问题中提供更多细节。当你说'切换'到UITableViewController时,你是说你从另一个推动这个UITableViewController它现在是你屏幕上的主要VC吗?
您需要在UITableViewController代码中实现一些方法; numberOfSections,numberOfRowsInSection,cellForRowAtIndexPath等。基本上,您需要遵守UITableViewDataSource协议(您可以在Apple的文档中查看)。
通过更多细节,我们可以为您提供更多帮助!
答案 1 :(得分:2)
如果您创建了UITableViewController的子类,则可以将任何初始化代码放入(override)方法:viewDidLoad。请参阅下面的示例,了解您需要的其他必要方法:
import UIKit
class TableViewController: UITableViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.navigationItem.title = "Test"
self.navigationItem.rightBarButtonItem = self.editButtonItem()
tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
// MARK: - Table view data source
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 3
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell = tableView.dequeueReusableCellWithIdentifier("cell") as? UITableViewCell
cell = UITableViewCell(style: .Subtitle, reuseIdentifier: "cell")
let xrow = indexPath.row
let xsection = indexPath.section
println("row = \(xrow), section = \(xsection)")
println("0: cell.textLabel?.text = \(cell!.textLabel?.text)")
cell!.textLabel?.text = "Section = \(xsection)"
println("1: cell.textLabel?.text = \(cell!.textLabel?.text)")
println("0: cell.detailTextLabel?.text = \(cell!.detailTextLabel?.text)")
cell!.detailTextLabel?.text = ("section = \(xsection), row = \(xrow)") as String!
println("1: cell.detailTextLabel?.text = \(cell!.detailTextLabel?.text)")
return cell!
}
}
答案 2 :(得分:0)
您可以使用viewDidAppear
或viewWillAppear
。使用语法
override func viewWillAppear() {
super.viewWillAppear()
//Code
}
希望这有帮助!