Swift-所选选项卡栏索引未触发向上滚动

Swift-所选选项卡栏索引未触发向上滚动,swift,uitabbarcontroller,Swift,Uitabbarcontroller,我有一个包含五个项目的选项卡栏,我正在尝试添加一个功能,以便在用户再次点击选项卡栏项目时滚动到顶部。将uitabarcontrollerdelegate添加到要触发事件的视图中,并创建了一个函数来确定所选的选项卡栏索引 当我打开应用程序时,索引0会自动选择,并且工作正常。当我向下滚动并点击选项卡栏索引时,视图自动滚动到顶部。当我转到索引1并在那里触发滚动时,问题就出现了。它以某种方式完全删除了我的第一个选项卡栏项目的自动滚动 在没有自动滚动的情况下选择其他选项卡栏项目不会影响索引0 主页(索引0

我有一个包含五个项目的选项卡栏,我正在尝试添加一个功能,以便在用户再次点击选项卡栏项目时滚动到顶部。将
uitabarcontrollerdelegate
添加到要触发事件的视图中,并创建了一个函数来确定所选的选项卡栏索引

当我打开应用程序时,索引0会自动选择,并且工作正常。当我向下滚动并点击选项卡栏索引时,视图自动滚动到顶部。当我转到索引1并在那里触发滚动时,问题就出现了。它以某种方式完全删除了我的第一个选项卡栏项目的自动滚动

在没有自动滚动的情况下选择其他选项卡栏项目不会影响索引0

主页(索引0)

用户(索引1)


任何具有
delegate
属性的对象在任何给定时间只能分配一个委托。最近设置的
委托
将接收下一个委托方法调用

在您的情况下,您可能可以在每个视图控制器的
viewdide
方法中将选项卡控制器的
delegate
重置为
self
,因为您希望当前可见的视图控制器是当前选项卡控制器委托

将以下内容添加到每个需要成为选项卡控制器委托的视图控制器:

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)

    self.tabBarController?.delegate = self
}

任何具有
delegate
属性的对象在任何给定时间只能分配一个委托。最近设置的
委托
将接收下一个委托方法调用

在您的情况下,您可能可以在每个视图控制器的
viewdide
方法中将选项卡控制器的
delegate
重置为
self
,因为您希望当前可见的视图控制器是当前选项卡控制器委托

将以下内容添加到每个需要成为选项卡控制器委托的视图控制器:

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)

    self.tabBarController?.delegate = self
}

UITabBarController
只能有一个委托。最后一个赢了,真的!那么,如何将自动滚动添加到两个不同的选项卡栏项目?一个
UITabBarController
只能有一个委托。最后一个赢了,真的!那么,我怎样才能将自动滚动添加到两个不同的选项卡栏项目中呢?
override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)

    self.tabBarController?.delegate = self
}