iOS UITableView点击按钮滚到顶部

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS UITableView点击按钮滚到顶部相关的知识,希望对你有一定的参考价值。

#import <UIKit/UIKit.h>

@interface AppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow *window;


@end
#import "AppDelegate.h"
#import "RootViewController.h"
@interface AppDelegate ()

@end

@implementation AppDelegate


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    self.window.backgroundColor = [UIColor whiteColor];
    
    
    self.window.rootViewController = [[RootViewController alloc] init];
    
    [self.window makeKeyAndVisible];
    return YES;
}

@end
#import <UIKit/UIKit.h>

@interface RootViewController : UIViewController

@end
#import "RootViewController.h"

@interface RootViewController ()<UITableViewDataSource,UITableViewDelegate>
{
    UITableView *_tableView;
    NSMutableArray *datas;
}

@end

@implementation RootViewController

- (void)loadView{
    [super loadView];
    _tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 64, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height - 64) style:UITableViewStylePlain];
    _tableView.dataSource = self;
    _tableView.delegate = self;
    [self.view addSubview:_tableView];
    
    [self initializeButtonWithFrame:CGRectMake(0, 0,100, 64) title:@"滚到顶部" action:@selector(scrollToTop:)];
    [self initializeButtonWithFrame:CGRectMake([UIScreen mainScreen].bounds.size.width - 100, 0, 100, 60) title:@"滚到底部" action:@selector(scrollToButtom:)];
}

- (void)viewDidLoad {
    [super viewDidLoad];
    self.title = @"测试";
    
    datas = [[NSMutableArray alloc] init];
    for (int i = 0; i < 30; i++) {
        NSString *str = [NSString stringWithFormat:@"row:%d",i];
        [datas addObject:str];
    }
    
}
/**
 *  初始化按钮
 *
 *  @param frame 尺寸
 *  @param title 标题
 *  @param aSEL  按钮的方法
 */
- (void)initializeButtonWithFrame:(CGRect)frame title:(NSString*)title action:(SEL)aSEL{
    UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
    btn.backgroundColor = [UIColor grayColor];
    btn.frame = frame;
    [btn setTitle:title forState:0];
    [btn addTarget:self action:aSEL forControlEvents:UIControlEventTouchUpInside];
    btn.backgroundColor = [UIColor grayColor];
    [self.view addSubview:btn];
}

- (void)scrollToTop:(UIButton*)sender{
    NSLog(@"滚到顶部");
    NSIndexPath *topRow = [NSIndexPath indexPathForRow:0 inSection:0];
    [_tableView scrollToRowAtIndexPath:topRow atScrollPosition:UITableViewScrollPositionTop animated:YES];
}

- (void)scrollToButtom:(UIButton*)sender{
    NSLog(@"滚到底部");
    NSIndexPath *buttomRow = [NSIndexPath indexPathForRow:datas.count - 1 inSection:0];
    [_tableView scrollToRowAtIndexPath:buttomRow atScrollPosition:UITableViewScrollPositionBottom animated:YES];
}

#pragma mark -- tableView的代理 --
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    return datas.count;
}

- (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    static NSString *identifier = @"cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
    if (!cell) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];
    }
    cell.textLabel.text = datas[indexPath.row];
    return cell;
}

@end

 

以上是关于iOS UITableView点击按钮滚到顶部的主要内容,如果未能解决你的问题,请参考以下文章

vue 点击路由跳转(地址重复)报错以及路由跳转滚动条未回滚到顶部问题

再次点击当前标签栏时如何在 UITableView 中滚动到顶部?

关于导航自定义视图距离边界问题,点击状态栏TableView不能回滚到顶部问题

使用大标题时 iOS 11 滚动到顶部无法正常工作

iOS UITableview 在有 HeaderView的时候滚动到顶部

iOS UITableview 在有 HeaderView的时候滚动到顶部