我一直在互联网上寻求答案并按照Apple文档中的步骤进行操作,但无济于事。 我有两个视图控制器。一个包含一个收藏夹项目的列表(FavouriteTableViewController),另一个包含添加到收藏夹列表的项目的详细信息(ExplorationDetailViewController)。
我在ExplorationDetailViewController的导航栏上(从导航控制器场景开始)有一个保存按钮,我想单击它以启动展开序列。我已经执行了以下步骤,但是当我单击保存按钮时,它完全没有响应。我包括了最相关的代码。
我已经在ExplorationResultViewController中创建了prepareforsegue函数,从那里我将图像数据和标签的数据传递到另一个ViewController中,作为展开任务的一部分
class ExplorationResultViewController: UIViewController {
var exploration_result: Favourites?
@IBOutlet weak var ExplorationLabel: UILabel!
@IBOutlet weak var ExplorationPhoto: UIImageView!
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// Pass the selected object to the new view controller.
super.prepare(for: segue, sender: sender)
let photo = ExplorationPhoto.image
let name = ExplorationLabel.text ?? ""
exploration_result = Favourites(name: name, photo: photo)
}
然后在FavouriteTableViewController中,我添加了一个unwindtoHere方法,该方法将图像和标签添加到列表中。
class FavouritesTableViewController: UITableViewController {
// MARK: Properties
var favourites = [Favourites]()
// MARK: Actions
@IBAction func unwindToFavouriteList(sender: UIStoryboardSegue) {
if let sourceViewController = sender.source as? ExplorationResultViewController, let favourite = sourceViewController.exploration_result{
// Add a new meal.
let newIndexPath = IndexPath(row: favourites.count, section: 0)
favourites.append(favourite)
tableView.insertRows(at: [newIndexPath], with: .automatic)
}
然后进入我的情节提要,我控制并拖动ExplorationDetailViewController中的“保存”按钮,并将其连接到场景顶部的退出项。我的展开方法在弹出窗口中显示为:“ unwindToFavouriteListWithSender”。我选择这个。
我现在应该很好,但是当我运行模拟器并单击“保存”按钮时,它绝对没有响应。参见StoryBoard Design 请帮助
答案 0 :(得分:1)
根据您的评论,我猜测问题是在按下“保存”按钮时,视图控制器层次结构中没有FavouritesTableViewController。您不能展开到尚未 的内容:“展开”意味着返回回到早先实例化的内容 em>并保持在视图控制器层次结构中当前视图控制器上方。
例如,假设我们有
UINavigationController -> (root view controller) -> FavouritesTableViewController
-> (push) ExplorationResultViewController
现在,我们可以从Exploration控制器退回到“ Favorites”控制器,因为“ Favorites”控制器已经在“ Exploration”控制器之前的层次结构中。听起来好像您不欣赏这个事实。