Intereting Posts
Xcode – Segue из UIImageView в новый ViewController Вычисление размера содержимого UIView? TextField Draggable в Swift iOS Есть ли способ не удалять каталог документов при удалении приложения? Разделение экрана между iPhone'ами ​​ Библиотека Cocoapods неправильно возвращает isKindOfClass во время модульных тестов создать пользовательскую станцию ​​с помощью XMPP в iphone Xcode – «ld: framework not found» происходит в рамке, не включенной напрямую Как определить изображение в оттенках серого Как я могу получить данные JSON из URL-адреса в мое приложение Objective-C, используя XCode 8? NSInternalInconsistencyException: webView: resolvePolicyForNavigationAction: решениеHandler не вызывалось Индикатор активности не находится в центре подсмотра (который не совпадает с родительским) Наследование только определенных реализаций суперкласса Ширина растяжения UILabel в соответствии с шириной содержащего текст с фоновым изображением Проверяйте каждую уникальную пару объектов в NSArray

Как сделать просмотр таблицы прокручиваемым

Как сделать прокрутку UITableView?
Когда я прокручиваю вниз или прокручиваю вверх вне области таблицы, приложение довольно. Я использую класс tablehandler для моего источника данных в виде таблицы. Вот некоторые из кода из класса tablehandler.

// TableHandler.h #import <Foundation/Foundation.h> @interface TableHandler : NSObject <UITableViewDelegate, UITableViewDataSource> { NSMutableArray * tableDataList; //database variables NSString *databaseName; NSString *databasePath; } @property (nonatomic, retain) NSMutableArray * tableDataList; - (void) fillList; - (void) dbPathInit; - (void) getAllPhysician; @end // TableHandler.m #import "TableHandler.h" #import "DoctorItem.h" #import "DoctorItem.h" #import <sqlite3.h> @implementation TableHandler @synthesize tableDataList; - (void) fillList { [self dbPathInit]; [self getAllPhysician]; } -(void)dbPathInit{ databaseName=@"clinic_directory.db"; NSArray *documentPaths= NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES); NSString *documentsDir=[documentPaths objectAtIndex:0]; databasePath=[documentsDir stringByAppendingPathComponent:databaseName]; } -(void)getAllPhysician{ sqlite3 *database; self.tableDataList=[[NSMutableArray alloc]init]; if(sqlite3_open([databasePath UTF8String],&database)==SQLITE_OK){ const char *sqlStatement="select d._id, d.title, d.name dname, qualification, c.name cname from doctor d left join category_doctor cd ON cd.doctor_id=d._id LEFT JOIN category c on c._id=cd.category_id order by d.name asc"; sqlite3_stmt *compiledStatement; if (sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL)==SQLITE_OK) {(sqlite3_step(compiledStatement)==SQLITE_ROW) { NSInteger doctorId=(int)sqlite3_column_int(compiledStatement,0); NSString *doctorTitle=[NSString stringWithUTF8String:(char*)sqlite3_column_text(compiledStatement, 1)]; NSString *doctorName=[NSString stringWithUTF8String:(char*)sqlite3_column_text(compiledStatement, 2)]; NSString *qualification=[NSString stringWithUTF8String:(char*)sqlite3_column_text(compiledStatement,3)]; NSString *category=[NSString stringWithUTF8String:(char*) sqlite3_column_text(compiledStatement,4)]; DoctorItem *physician=[[DoctorItem alloc]initWithId:doctorId Title:doctorTitle DName:doctorName Qualifications:qualification CName:category]; [self.tableDataList addObject:physician]; [physician release]; } } sqlite3_finalize(compiledStatement); } sqlite3_close(database); } - (NSInteger) tableView : (UITableView *) tableView numberOfRowsInSection: (NSInteger) section { return [self.tableDataList count]; } -(UITableViewCell *) tableView : (UITableView *) tableView cellForRowAtIndexPath: (NSIndexPath *) indexPath { static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; } DoctorItem *physician=(DoctorItem*)[tableDataList objectAtIndex:indexPath.row]; UILabel *lbName=[[UILabel alloc] initWithFrame:CGRectMake(10, 10, 290, 25)]; [lbName setText:physician.DName]; [cell.contentView addSubview:lbName]; [lbName release]; UILabel *lbQualifications=[[UILabel alloc]initWithFrame:CGRectMake(10,40,290,25)]; [lbQualifications setText:physician.Qualifications]; lbQualifications.textColor=[UIColor lightGrayColor]; [cell.contentView addSubview:lbQualifications]; [lbQualifications release]; UILabel *lbCategory=[[UILabel alloc]initWithFrame:CGRectMake(10,70,290,25)]; [lbCategory setText:physician.CName]; lbCategory.textColor=[UIColor lightGrayColor]; [cell.contentView addSubview:lbCategory]; [lbCategory release]; [physician release]; return cell; } -(CGFloat)tableView :(UITableView*)tableView heightForRowAtIndexPath:(NSIndexPath*)indexPath{ return 100; } - (void)dealloc { [tableDataList release]; [super dealloc]; } @end 

UITableView является подклассом UIScrollView. Он будет автоматически прокручиваться для вас.

Вашему UITableView понадобится объект источника данных для его передачи. Если число или строки из источника данных больше, чем то, что может поместиться на экране, таблица будет прокручиваться.

Если вы хотите программно прокручивать таблицу, вы можете использовать свойство offset для UIScrollView или один из методов в UITableView для этого.

http://developer.apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/UITableView_Class/Reference/Reference.html

http://developer.apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/UIScrollView_Class/Reference/UIScrollView.html

По мере того, как вы увеличиваете свои таблицы таблицы, он автоматически прокручивается. Не нужно включать дополнительные свойства для tableview.

Например:

 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return 10; } 

Вы не делаете это на самом деле прокручиваемым, устанавливая свойство или так. Посмотрите на UITableviewDataSource и UITableviewDelegate Protocols. Внедряя эти сообщения, вы предоставляете данные для представления таблицы, и затем они будут автоматически прокручиваться по мере необходимости.