gpt4 book ai didi

ios - 点击标签栏滚动到 UITableViewController 的顶部并不总是有效

转载 作者:行者123 更新时间:2023-11-28 07:11:59 25 4
gpt4 key购买 nike

我正在尝试实现这样的代码,当我点击已经选择的选项卡栏项目时,我的表格 View 将滚动到第一行。通过查看其他堆栈溢出答案,我大部分时间都可以使用此功能;但是,我注意到一个奇怪的行为。出于某种原因,如果我从一开始就没有取消选择该选项卡,则代码将不起作用。

例如,当我第一次加载应用程序时,选项卡 0 被选中。如果我向下滚动并再次点击选项卡 0,它不会滚动到顶部。但是,如果我选择选项卡 1,然后选择选项卡 0,然后继续向下滚动并再次按选项卡 0,它会向上滚动。为什么我的代码在第一次选择选项卡时不起作用?

func tabBarController(tabBarController: UITabBarController, didSelectViewController viewController: UIViewController) {
if viewController is UINavigationController {
if navigationController == viewController {
let topIndexPath = NSIndexPath(forRow: 0, inSection: 0)
tableView.scrollToRowAtIndexPath(topIndexPath, atScrollPosition: .Top, animated: true)
}
}
}

最佳答案

我不知道关于你当前实现的所有事情,但你可以通过覆盖负责选项卡选择的 UITabBarControllerDelegate 方法来检查当前选择的 View Controller 和接下来将要选择的 View Controller 是否相等.

这是部分解决方案;

@interface AppDelegate () <UITabBarControllerDelegate>

@property (nonatomic, weak) UIViewController *previousViewController;

@end


@implementation AppDelegate

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
{
self.previousViewController = tabBarController.selectedViewController;
return YES;
}

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
if (self.previousViewController == viewController) {
[viewController.tableView setContentOffset:CGPointZero animated:YES];
}
}

@end

希望这对您有所帮助。

关于ios - 点击标签栏滚动到 UITableViewController 的顶部并不总是有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28122667/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com