Ios 表格单元格是一个大问题
我会尽可能清楚地说明这一点。在我的Xcode项目中,我重用了一个原型单元,我希望每个单元打开一个不同的视图控制器。你们觉得我怎么能做到 下面是my Main.storyboard中可重用单元的图片: 以下是重复使用单元格的结果: 下面是我的控制器类的代码:Ios 表格单元格是一个大问题,ios,swift,uitableview,Ios,Swift,Uitableview,我会尽可能清楚地说明这一点。在我的Xcode项目中,我重用了一个原型单元,我希望每个单元打开一个不同的视图控制器。你们觉得我怎么能做到 下面是my Main.storyboard中可重用单元的图片: 以下是重复使用单元格的结果: 下面是我的控制器类的代码: import UIKit class NewsTableViewController: UITableViewController { @IBOutlet var menuButton:UIBarButtonItem! @
import UIKit
class NewsTableViewController: UITableViewController {
@IBOutlet var menuButton:UIBarButtonItem!
@IBOutlet var extraButton:UIBarButtonItem!
override func viewDidLoad() {
super.viewDidLoad()
tableView.estimatedRowHeight = 242.0
tableView.rowHeight = UITableViewAutomaticDimension
if revealViewController() != nil {
menuButton.target = revealViewController()
menuButton.action = #selector(SWRevealViewController.revealToggle(_:))
revealViewController().rightViewRevealWidth = 150
extraButton.target = revealViewController()
extraButton.action = #selector(SWRevealViewController.rightRevealToggle(_:))
view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
// MARK: - Table view data source
override func numberOfSections(in tableView: UITableView) -> Int {
// Return the number of sections
return 1
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// Return the number of rows
return 3
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! NewsTableViewCell
// Configure the cell...
if indexPath.row == 0 {
cell.postImageView.image = UIImage(named: "watchkit-intro")
cell.postTitleLabel.text = "WatchKit Introduction: Building a Simple Guess Game"
} else if indexPath.row == 1 {
cell.postImageView.image = UIImage(named: "custom-segue-featured-1024")
cell.postTitleLabel.text = "Building a Chat App in Swift Using Multipeer Connectivity Framework"
} else {
cell.postImageView.image = UIImage(named: "webkit-featured")
cell.postTitleLabel.text = "A Beginner’s Guide to Animated Custom Segues in iOS 8"
}
return cell
}
}
为了清楚起见,我希望pic2中的每个单元格打开一个不同的视图控制器。例如,我希望单元格1打开新视图控制器1,单元格2打开新视图控制器2,单元格3打开新视图控制器3
谢谢你的阅读 我认为应该实现tableview的委托方法 e、 g
您必须实现tableView,didSelectRowAt:: 或者,您可以向表视图单元格中添加手势识别器,并实现自定义单元格委托。不过,在你的情况下,似乎没有必要这样做,所以我不推荐这样做。这似乎有点过分了。但是,如果您感兴趣:
class NewsTableViewCell: UITableViewCell {
var delegate: NewsTableViewCellDelegate?
override func awakeFromNib() {
let recognizer = UIGestureRecognizer(target: self, action: #selector(tapped))
contentView.addGestureRecognizer(recognizer)
}
func tapped() {
delegate?.cellTapped(self)
}
}
protocol NewsTableViewCellDelegate {
func cellTapped(_ cell: NewsTableViewCell)
}
extension MyViewController: NewsTableViewCellDelegate {
func cellTapped(_ cell: NewsTableViewCell) {
if cell == cell1 { }
else if cell == cell2 { }
else if cell == cell3 { }
//You would have to manually determine how to check if a cell is cell1, cell2, or cell3, since you wouldn't have an indexPath available.
}
}
对于这两个错误
从main.storyboard中删除segue,因为您正在从storyboard中使用segue,但在代码工作中,您需要显示ViewConroller
在代码工作中,将行替换为
**
**
如果您正在推动VC,请使用以下代码:
let myViewController = self.storyboard?.instantiateViewController(withIdentifier: "myViewController") as! Conversation_VC
self.navigationController?.pushViewController(myViewController, animated: true)
我想是这样的
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
switch indexPath.row {
case 0:
// segue to view 1
case 1:
// segue to view 2
case 2:
// segue to view 3
case 3:
// segue to view 4
default:
// default go here
}
}
表格单元格是一个大的视图控制器,这意味着什么?我想我有一个问题,为什么要每个单元格打开一个不同的视图控制器?是否有x种不同类型的视图控制器,某些单元格将触发一种类型,而其他单元格将触发其他类型?还是计划让tableview中的每个单元格打开不同的视图控制器?这促使我再次问:为什么?@WERUreo是的!你猜对了。他想在点击每个不同的单元格时打开不同的VC。但我不明白,如果他的UITableView中有50个单元格,那么他需要50个VC,这不是一个好做法。@appmaker重用您的代码和VC。在你的问题中提到为什么不同的单元格点击需要不同的VC,因为这不是一个好的做法。我们中的任何人都可以告诉你任何好的方法,但首先要提到你的最终结果。@the_dahiya_boy我只想要我的UITableViewController中的三个单元格,我最近发布了一个关于我遇到的错误的更新。请检查一下。谢谢Xcode告诉我你的代码不起作用,我已经删除了segues。Xcode告诉我这是预期的declaration@appmaker给我你的Gmail iD,我会把这方面的演示寄给你。我的电子邮件地址是gregjohnson88888@gmail.commy电子邮件地址是gregjohnson88888@gmail.com
`let storyboard = UIStoryboard(name: "main.Storyboard", bundle: nil)
let controller = storyboard.instantiateViewController(withIdentifier:"myViewController") as! UIViewController
self.present(controller, animated: true, completion: nil)`
let myViewController = self.storyboard?.instantiateViewController(withIdentifier: "myViewController") as! Conversation_VC
self.navigationController?.pushViewController(myViewController, animated: true)
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
switch indexPath.row {
case 0:
// segue to view 1
case 1:
// segue to view 2
case 2:
// segue to view 3
case 3:
// segue to view 4
default:
// default go here
}
}