0

私は本当に小さくて厄介な問題を抱えています。(しゃれた意図はありません)私は自分の間違いを見つけたようです。チャットでも質問しましたが、解決できませんでした。Abizerns github から tableView の「もっと読み込む...」を取得して実装しました。起動時に「さらに読み込む...」をクリックする必要があるという部分を除いて、機能します。そのため、開始時に「もっと読み込む...」をクリックするまで、tableViewの最初のエントリは表示されません。あなたは私の迷惑を見ることができます。たぶん、誰かが私の間違いを見つけて、tableView が実際に起動時に最初の 10 エントリをロードするようにすることができます。

#define kNumberOfItemsToAdd 10
#define PADDING 10.0f

@interface Main ()

@end

@implementation Main
@synthesize tabelle;


- (id)initWithStyle:(UITableViewStyle)style
{
    self = [super initWithStyle:style];
    if (self) {
        // Custom initialization
    }
    numberOfItemsToDisplay = kNumberOfItemsToAdd;
    return self;
}

#pragma mark - Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    if (numberOfItemsToDisplay == [tabelle count]) {
        return 1;
    }
    return 2;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    if (section == 0) {
        return numberOfItemsToDisplay;
    } else {
        return 1;
    }
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
        cell.selectionStyle = UITableViewCellSelectionStyleNone;
        cell.textLabel.lineBreakMode = UILineBreakModeWordWrap;
        cell.textLabel.numberOfLines = 6;
        cell.detailTextLabel.lineBreakMode = UILineBreakModeWordWrap;
        cell.detailTextLabel.numberOfLines = 1;
    }

    if (indexPath.section == 0) {            

    cell.textLabel.font = [UIFont fontWithName:@"Verdana" size:14.0];
    cell.detailTextLabel.font = [UIFont fontWithName:@"Verdana" size:12.0];

    NSString *TableText = [[NSString alloc] initWithFormat:@"%@", [[tabelle objectAtIndex:indexPath.row] Name]];
    NSString *TableText2 = [[NSString alloc] initWithFormat:@"%@", [[tabelle objectAtIndex:indexPath.row] m_m]];  

    NSString *cellValue = [NSString stringWithFormat:@"%@", TableText2];
    NSString *cellValue2 = [NSString stringWithFormat:@"by: %@", TableText];
    cell.textLabel.text = cellValue;
    cell.detailTextLabel.textColor = [UIColor colorWithRed:0.196f green:0.3098f blue:0.52f alpha:1.f];
    cell.detailTextLabel.text = cellValue2;
    } else {
        cell.textLabel.text = [NSString stringWithFormat:@"Next %d items", kNumberOfItemsToAdd];
        cell.textLabel.textAlignment = UITextAlignmentCenter;
        cell.textLabel.textColor = [UIColor colorWithRed:0.196f green:0.3098f blue:0.52f alpha:1.f];
        cell.textLabel.font = [UIFont boldSystemFontOfSize:14.f];
    }
    return cell;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSString *text = [[self.tabelle objectAtIndex:indexPath.row] m_m];
    CGSize textSize = [text sizeWithFont:[UIFont systemFontOfSize:14.0f] constrainedToSize:CGSizeMake(self.tableView.frame.size.width - PADDING * 3, 1000.0f)];

    return textSize.height + PADDING * 3;

}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (indexPath.section == 1) {
        NSUInteger i, totalNumberOfItems = [tabelle count];        
        NSUInteger newNumberOfItemsToDisplay = MIN(totalNumberOfItems, numberOfItemsToDisplay + kNumberOfItemsToAdd);
        NSMutableArray *indexPaths = [[NSMutableArray alloc] init];        

        for (i=numberOfItemsToDisplay; i<newNumberOfItemsToDisplay; i++) {
            [indexPaths addObject:[NSIndexPath indexPathForRow:i inSection:0]];
        }        

        numberOfItemsToDisplay = newNumberOfItemsToDisplay;                

        [tableView beginUpdates];
        [tableView insertRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationTop];
        if (numberOfItemsToDisplay == totalNumberOfItems) {
            [tableView deleteSections:[NSIndexSet indexSetWithIndex:1] withRowAnimation:UITableViewRowAnimationTop];
        }        
        [tableView endUpdates];
        // Scroll the cell to the top of the table
        if (newNumberOfItemsToDisplay < totalNumberOfItems) {
            dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 200000000), dispatch_get_main_queue(), ^(void){
                [tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionTop animated:YES];
            });
            [tableView deselectRowAtIndexPath:indexPath animated:YES];
        } else {
            dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 200000000), dispatch_get_main_queue(), ^(void){
                [tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:totalNumberOfItems-1 inSection:0] atScrollPosition:UITableViewScrollPositionTop animated:YES];
            });
        }

    }    

}
4

2 に答える 2

1

「 Loadmore... 」の実装は使用していませんが、必要なのはメソッドに追加することかもしれませ[self.tabelle reloadData]- (void)viewWillAppear:(BOOL)animated

于 2012-05-09T19:46:45.663 に答える
1

[もっと読み込む...]をクリックすると、どのメソッドが呼び出されますか?テーブルビューがロードされるときに、プログラムでそのメソッドを呼び出すことはできませんか?

于 2012-05-09T20:15:12.170 に答える