从另一个ViewController重新分配TableView单元格变量



我正在开发一款应用程序,您可以在该应用程序中跟踪书籍的阅读进度。我有3个视图控制器。一个是HomeViewController,在那里我有一个TableView,可以显示这本书。第二个是AddBookController,您可以在其中输入一些数据,按下按钮并在TableView中创建新行。第三个是BookDetailViewController,当您单击所选行时会显示它。我被卡住了。您按下一个按钮,相应的TableView单元格应更新其页码。

我可以使用通知中心吗?从HomeViewController到BookDetailViewController没有Segue。

HomeViewController

class HomeViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, SendingBookDataProtocol {
@IBOutlet weak var addBookButton: UIButton!
@IBOutlet var tableView: UITableView!

var items = [BookItem]()
override func viewDidLoad() {
super.viewDidLoad()
tableView?.delegate = self
tableView?.dataSource = self
let nib = UINib(nibName: "BookCell", bundle: nil)
tableView?.register(nib, forCellReuseIdentifier: "BookCell")
}
func sendDataToHomeController(bookEntry item:BookItem) {
items.append(item)
tableView.reloadData()
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
items.count
}

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let bookDetailVc = self.storyboard?.instantiateViewController(withIdentifier: "BookDetailView") as? BookDetailViewController
let item = items[indexPath.row]

let currentPageInt = Float(item.currentPage)!
let totalPagesInt = Float(item.totalPages)!


bookDetailVc?.lblName = item.title
bookDetailVc?.lblCurrentPage = item.currentPage
bookDetailVc?.lblTotalPages = item.totalPages

self.navigationController?.pushViewController(bookDetailVc!, animated: true)

}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "BookCell", for: indexPath) as! BookCell
let item = items[indexPath.row]

cell.bookImage.image = item.image
cell.title.text = item.title
cell.author.text = item.author
cell.pageNumbers.text = "P. " + item.currentPage + " / " + item.totalPages

cell.title.text = item.title
return cell
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "getBookData" {
let addBookVC: AddBookController = segue.destination as! AddBookController
addBookVC.delegate = self
}
}
}

BookDetailView

class BookDetailViewController: HomeViewController{
@IBOutlet weak var bookTitle: UILabel!
@IBOutlet weak var currentPageDetail: UILabel!
@IBOutlet weak var totalPagesDetail: UILabel!
var lblName = String()
var lblCurrentPage = String()
var lblTotalPages = String()

override func viewDidLoad() {
super.viewDidLoad()
bookTitle.text = lblName
currentPageDetail.text = lblCurrentPage
totalPagesDetail.text = lblTotalPages
}
}

您的self.navigationController?为空?

试试看self.present(bookDetailVc!, animated: true)

我希望这对你有帮助。

相关内容

  • 没有找到相关文章