效果如下:
ViewController.h
1 #import <UIKit/UIKit.h> 2 3 @interface ViewController : UITableViewController 4 @property (strong, nonatomic) NSMutableArray *mArrDataSource; 5 6 @end
ViewController.m
1 #import "ViewController.h" 2 3 @interface ViewController () 4 - (void)layoutUI; 5 - (UIBarButtonItem *)barButtonItemForToolbar:(NSString *)title selectorName:(NSString *)selectorName; 6 - (void)scrollToTopDidPush:(UIBarButtonItem *)sender; 7 - (void)scrollToSelectedRowDidPush:(UIBarButtonItem *)sender; 8 - (void)scrollToBottomDidPush:(UIBarButtonItem *)sender; 9 @end 10 11 @implementation ViewController 12 #define kRowCount 64 13 14 - (void)viewDidLoad { 15 [super viewDidLoad]; 16 17 [self layoutUI]; 18 } 19 20 - (void)didReceiveMemoryWarning { 21 [super didReceiveMemoryWarning]; 22 // Dispose of any resources that can be recreated. 23 } 24 25 - (void)viewDidAppear:(BOOL)animated { 26 [super viewDidAppear:animated]; 27 28 [self.navigationController setNavigationBarHidden:NO animated:animated]; 29 [self.navigationController setToolbarHidden:NO animated:animated]; 30 } 31 32 - (void)layoutUI { 33 _mArrDataSource = [[NSMutableArray alloc] initWithCapacity:kRowCount]; 34 for (NSUInteger i=0; i<kRowCount; i++) { 35 [_mArrDataSource addObject:[NSNumber numberWithUnsignedInteger:i]]; 36 } 37 [self.tableView setAllowsSelection:YES]; //设置在普通状态中,是否允许选中;默认值为YES 38 [self.tableView setAllowsSelectionDuringEditing:YES]; //设置在编辑状态中,是否允许选中;默认值为YES 39 40 self.navigationItem.title = @"自动滚动到被选中单元格"; 41 UIBarButtonItem *barBtnScrollToTop = [self barButtonItemForToolbar:@"滚动到头部" selectorName:@"scrollToTopDidPush:"]; 42 UIBarButtonItem *barBtnScrollToSelectedRow = [self barButtonItemForToolbar:@"滚动到被选中单元格" selectorName:@"scrollToSelectedRowDidPush:"]; 43 UIBarButtonItem *barBtnScrollToBottom = [self barButtonItemForToolbar:@"滚动到底部" selectorName:@"scrollToBottomDidPush:"]; 44 self.toolbarItems = @[barBtnScrollToTop, barBtnScrollToSelectedRow, barBtnScrollToBottom]; 45 } 46 47 - (UIBarButtonItem *)barButtonItemForToolbar:(NSString *)title selectorName:(NSString *)selectorName { 48 UIBarButtonItem *barBtnItem = [[UIBarButtonItem alloc] initWithTitle:title 49 style:UIBarButtonItemStyleDone 50 target:self 51 action:NSSelectorFromString(selectorName)]; 52 return barBtnItem; 53 } 54 55 - (void)scrollToTopDidPush:(UIBarButtonItem *)sender { 56 [self.tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] 57 atScrollPosition:UITableViewScrollPositionTop 58 animated:YES]; 59 } 60 61 - (void)scrollToSelectedRowDidPush:(UIBarButtonItem *)sender { 62 [self.tableView scrollToNearestSelectedRowAtScrollPosition:UITableViewScrollPositionNone 63 animated:YES]; 64 65 /* 66 typedef NS_ENUM(NSInteger, UITableViewScrollPosition) { 67 UITableViewScrollPositionNone, 68 UITableViewScrollPositionTop, 69 UITableViewScrollPositionMiddle, 70 UITableViewScrollPositionBottom 71 }; // scroll so row of interest is completely visible at top/center/bottom of view 72 */ 73 } 74 75 - (void)scrollToBottomDidPush:(UIBarButtonItem *)sender { 76 [self.tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:(kRowCount - 1) inSection:0] 77 atScrollPosition:UITableViewScrollPositionBottom 78 animated:YES]; 79 } 80 81 #pragma mark - TableView 82 - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { 83 return @"列表"; 84 } 85 86 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 87 return 1; 88 } 89 90 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 91 return kRowCount; 92 } 93 94 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 95 static NSString *cellIdentifier = @"cellIdentifier"; 96 UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier]; 97 if (!cell) { 98 cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier]; 99 } 100 101 NSInteger row = indexPath.row; 102 cell.textLabel.text = [_mArrDataSource[row] stringValue]; 103 104 return cell; 105 } 106 107 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 108 109 } 110 111 @end
AppDelegate.h
1 #import <UIKit/UIKit.h> 2 3 @interface AppDelegate : UIResponder <UIApplicationDelegate> 4 @property (strong, nonatomic) UIWindow *window; 5 @property (strong, nonatomic) UINavigationController *navigationController; 6 7 @end
AppDelegate.m
1 #import "AppDelegate.h" 2 #import "ViewController.h" 3 4 @interface AppDelegate () 5 @end 6 7 @implementation AppDelegate 8 9 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 10 _window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 11 ViewController *viewController = [[ViewController alloc] init]; 12 _navigationController = [[UINavigationController alloc] initWithRootViewController:viewController]; 13 _window.rootViewController = _navigationController; 14 //[_window addSubview:_navigationController.view]; //当_window.rootViewController关联时,这一句可有可无 15 [_window makeKeyAndVisible]; 16 return YES; 17 } 18 19 - (void)applicationWillResignActive:(UIApplication *)application { 20 } 21 22 - (void)applicationDidEnterBackground:(UIApplication *)application { 23 } 24 25 - (void)applicationWillEnterForeground:(UIApplication *)application { 26 } 27 28 - (void)applicationDidBecomeActive:(UIApplication *)application { 29 } 30 31 - (void)applicationWillTerminate:(UIApplication *)application { 32 } 33 34 @end
时间: 2024-11-07 14:33:54