почему TTTableViewDragRefreshDelegate не работает - PullRequest
0 голосов
/ 11 июля 2011

Мой класс выглядит так:

- (id)init
{
NSLog(@"lalallalalala");
if (self = [super init]) {
    self.title = @"lalal";

    UIImage* image = [UIImage imageNamed:@"tab.png"];
    self.tabBarItem = [[[UITabBarItem alloc] initWithTitle:self.title image:image tag:0] autorelease];
    self.variableHeightRows = YES;
    id<TTTableViewDataSource> ds = [MainPageDataSource dataSourceWithItems:nil];
    ds.model = CreateTabModelWithCurrentSettings();
    self.dataSource = ds;

}
return self;
}




- (void)loadView
{
// Create the tableview.

NSLog(@"in MainPageController");

//self.view = [[[UIView alloc] initWithFrame:TTApplicationFrame()] autorelease];
self.view  =[[UIView alloc] init];
self.tableView = [[[UITableView alloc] initWithFrame:TTApplicationFrame() style:UITableViewStylePlain] autorelease];

self.tableView.rowHeight = 80.f;
self.tableView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
[self.view addSubview:self.tableView];


}



- (id<UITableViewDelegate>)createDelegate {
   return [[[TTTableViewDragRefreshDelegate alloc] initWithController:self] autorelease];
}

CreateDelegate, похоже, не работает, перетаскивание и обновление не отображаются.Я не знаю, что не так с моим кодом.

@ aporat контроллер представления расширяет TTTableViewController, и мой код изменился на:

- (id)init
{
NSLog(@"lalallalalala");
if (self = [super init]) {
    self.title = @"app";

    UIImage* image = [UIImage imageNamed:@"tab.png"];
    self.tabBarItem = [[[UITabBarItem alloc] initWithTitle:self.title image:image tag:0] autorelease];
    self.variableHeightRows = YES;
    //id<TTTableViewDataSource> ds = [MainPageDataSource dataSourceWithItems:nil];
    //        ds.model = CreateTabModelWithCurrentSettings();
    //      self.dataSource = ds;
    //self.dataSource = [[[MainPageDataSource alloc] init] autorelease];

}
return self;
}


- (void)createModel {
NSLog(@"in createModel");
self.dataSource = [[[MainPageDataSource alloc] init] autorelease];
}

//- (void)loadView
//{
//    // Create the tableview.
//  
//  NSLog(@"in MainPageController");
//  
//    self.view = [[[UIView alloc] initWithFrame:TTApplicationFrame()] autorelease];
//  //self.view  =[[UIView alloc] init];
//    self.tableView = [[[UITableView alloc] initWithFrame:TTApplicationFrame()  style:UITableViewStylePlain] autorelease];
//  self.toolbarItems = [NSArray arrayWithObjects:
//                       [TTButton buttonWithStyle:@"toolbarButton:" title:@"Toolbar Button"],
//                       [TTButton    buttonWithStyle:@"toolbarRoundButton:" title:@"Round Button"],
//                       nil]; 
//  
//    self.tableView.rowHeight = 80.f;
//    self.tableView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
//    [self.view addSubview:self.tableView];
//  
//
//}
//- (void)viewDidLoad {
//  [super viewDidLoad];
//  
//  self.navigationController.navigationBar.alpha = 0;
//}


- (id<UITableViewDelegate>)createDelegate {
return [[[TTTableViewDragRefreshDelegate alloc] initWithController:self] autorelease];
}

По-прежнему не отображается drag & fresh

1 Ответ

0 голосов
/ 11 июля 2011

Есть несколько проблем с вашим кодом:

  • Ваш контроллер просмотра должен расширяться TTTableViewController
  • Не переопределяйте self.view и self.tableView в loadView. TTTableViewController загрузить эти представления для вас.
  • Создайте свой источник данных, используя стандартный метод. Эта функция вызывается автоматически, если вы используете TTTableViewController:

    ///////////////////////////////////////////////////////////////////////////////////////////////////
    - (void)createModel {
        self.dataSource = [[[CurrencyDataSource alloc] init] autorelease];
     }
    

Что произойдет, если вы вызовете эту функцию напрямую? (Это должно вручную отобразить перетаскивание для обновления заголовка)

///////////////////////////////////////////////////////////////////////////////////////////////////
- (void)reload {

  if ([self.tableView.delegate isKindOfClass:[TTTableViewDragRefreshDelegate class]]) {
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:ttkDefaultFastTransitionDuration];
    self.tableView.contentOffset = CGPointMake(0, -60.0f);
    [UIView commitAnimations];
  }

  [super reload];
}
...