Swift View Controller 滑动两次问题

Posted

技术标签:

【中文标题】Swift View Controller 滑动两次问题【英文标题】:Swift View Controller slides twice problem 【发布时间】:2020-12-21 23:57:56 【问题描述】:

我对所有快速的东西都很陌生,我希望有人可以帮助我解决这个问题

我已经设置了以下

带有 1 个导航控制器的标签栏控制器

所以如果我启动应用程序一切都很好,并且带有“按钮”的视图控制器被加载到选项卡 1 中

现在我想在 tab1 中导航到另一个带有“标签”的视图控制器

这就是我所做的:

将按钮连接到标签为“显示序列”的新视图控制器

如果我启动应用程序并单击按钮,则带有标签的新视图控制器会滑动并显示返回按钮

--> 所以在我看来一切都很好..它只滑动“一次”

但是,如果我以编程方式在左上角的视图控制器中添加 UIBarButtonItem,并希望以编程方式导航到带有标签的视图控制器,它会加载两次。我正在使用以下代码:

@objc func settingsTapped() 
    
    
let new = storyboard?.instantiateViewController(withIdentifier: "new") as! NewViewController

self.navigationController?.pushViewController(new, animated:  true)

    

这里的问题是视图控制器总是加载两次。它再次滑动,所以我必须单击两次才能返回主视图控制器

有人可以帮我吗?

我不明白为什么会发生这种情况,因为如果我单击带有“仅显示序列”的按钮,那么它只会按预期滑动一次。

【问题讨论】:

settingsTapped 调用了多少次? 嗨,唐..只有一次!我也做了一个完整的新测试项目并且有完全相同的问题。首先我以为我在其他项目中犯了一个错误,但事实并非如此 我假设您还没有使用 segue 将 UIBarButtonItem 连接到新的视图控制器? 不,我没有这样做。我怎样才能以编程方式为带有标签的视图控制器创建一个序列? 这可能会有所帮助:***.com/a/54201390/10116367 【参考方案1】:

好的,我已经解决了这个问题。非常感谢这里的答案!

这真的是一个很难的“坚果”,我已经搜索了很长时间如何解决这个问题

它滑动了两次,因为在创建 UiBarButtomItem 时我使用了这个

 leftbutton.addTarget(self, action: #selector(settingsTapped), for: .allEvents)

我已将“.allEvents”替换为“.touchUpInside”,现在它按预期工作并且只滑动一次

 leftbutton.addTarget(self, action: #selector(settingsTapped), for: .touchUpInside)

现在可以正常使用了。

我真的不知道为什么 .allEvents 会产生两次滑动

【讨论】:

以上是关于Swift View Controller 滑动两次问题的主要内容,如果未能解决你的问题,请参考以下文章

从 Tab View Controller 切换到滑动手势时的 iOS Xcode 问题

删除Popover View Controller -swift

Swift:在调用 applicationDidEnterBackground 时确定 Active View Controller

Swift:UITableViewController - 修改 UITableView 和 View Controller 之间的边距

Swift 4.2 UIDocumentBrowser View Controller Powerpoint PPTX 文件灰显

Swift 4 Split View Controller 详细信息替换 Master