W poniższym kodzie wypycham nowy UITableView po kliknięciu przycisku. TableView ma 25 wierszy. Widzę, że pierwszy rząd 9 i dziesiąty został odcięty. Nie mogę przewinąć w dół, aby wyświetlić pozostałe wiersze. Jak sprawić, by TableView można było przewijać? Dziękuję Ci.

- (IBAction)showListPicker:(id)sender {
    ListPicker *lp = [[ListPicker alloc] initWithStyle:UITableViewStyleGrouped];
    [self setTitle:@"Home"];
    [[self navigationController] pushViewController:lp animated:YES];
    [lp release];
}

Poniżej znajduje się deklaracja dla ListPicker

#import <Foundation/Foundation.h>

@interface ListPicker : UITableViewController
{}
@end

Poniżej przedstawiono implementację ListPicker

#import "ListPicker.h"
#import "GameStore.h"
#import "List.h"
#import "HomeViewController.h"

@implementation ListPicker

- (id)init
{
    return [super initWithStyle:UITableViewStyleGrouped];
}

-(id)initWithStyle:(UITableViewStyle)style{
    return [self init];
}

-(void)dealloc{
    [super dealloc];
}

-(void)viewDidLoad{
    [self setTitle:@"Select List"];
    [[self navigationController] setNavigationBarHidden:NO];
}

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    return [[[GameStore defaultStore] allLists] count];
}

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"UITableViewCell"];
    if(cell == nil)
    {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
                                       reuseIdentifier:@"UITableViewCell"] autorelease];
    }

    NSArray *allList = [[GameStore defaultStore] allLists];
    List *mylist = [allList objectAtIndex:[indexPath row]];
    NSString *listTitle = [mylist label];

    [[cell textLabel] setText:listTitle];
    [cell setAccessoryType:UITableViewCellAccessoryNone];
    return cell;
}

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    List *list = [[[GameStore defaultStore] allLists] objectAtIndex:[indexPath row]];
    [[GameStore defaultStore] setSelectedList:list];

    HomeViewController *hv = [[HomeViewController alloc] init];
    [[self navigationController] popViewControllerAnimated:YES];
}


@end
1
atbebtg 24 sierpień 2011, 00:47
2
Nie jestem pewien, czy jest to związane z problemem, ale w swojej implementacji initWithStyle: prawdopodobnie chcesz zrobić return [super initWithStyle:style]; zamiast return [self init];
 – 
filipe
24 sierpień 2011, 00:53
Czy w ogóle się odbija? czy stół jest całkowicie naprawiony?
 – 
TommyG
24 sierpień 2011, 00:55

3 odpowiedzi

Najlepsza odpowiedź

Spróbuj dodać:

yourTable.scrollEnabled = YES;

Ponadto, tworząc tabelę programistycznie, upewnij się, że jest ona „wystarczająco długa”, tj.

CGRect cgRct = CGRectMake(0, 0, 320, 600);          
yourTable = [[UITableView alloc] initWithFrame:cgRct style:UITableViewStyleGrouped];    
2
TommyG 24 sierpień 2011, 01:10
Gdzie dodać powyższy kod? z poziomu (IBAction)showListPicker:(id)sender?
 – 
atbebtg
24 sierpień 2011, 01:13
Zazwyczaj w twoim viewDidLoad, ale nie widzę tutaj żadnego... być może tam, gdzie zainicjujesz wszystko w kontrolerze widoku. Ogólnie radzę używać UIViewController zamiast UITableViewController i dodawać to wszystko programowo.
 – 
TommyG
24 sierpień 2011, 01:17

Zamiast TAK, napisz prawda, ponieważ akceptuje tylko wartości logiczne.

yourTable.scrollEnabled = true;
1
Micho 23 czerwiec 2016, 06:05

Dwa typowe sposoby zmiany stanu logicznego przewijania w UITableView:

1) Można to włączyć w inspektorze atrybutów UITableView za pośrednictwem Storyboard.

enter image description here

2) Lub programowo w twoim viewDidLoad() przez ViewController.

import UIKit  

    class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

        @IBOutlet var yourTable: UITableView!

        override func viewDidLoad() {
            super.viewDidLoad()

            // assign delegate and datasource 
            yourTable.delegate = self
            yourTable.dataSource = self

            //enable UITableView scrolling in Swift 3 and Swift 4.
            yourTable.isScrollEnabled = true
    } 
}
1
Kyle C. Beachem 25 marzec 2019, 17:55
Dziękujemy za ten fragment kodu, który może zapewnić ograniczoną, natychmiastową pomoc. właściwe wyjaśnienie znacznie poprawiłoby jego długoterminową wartość, pokazując, dlaczego jest to dobre rozwiązanie problemu i uczynić go bardziej przydatnym dla przyszłych czytelników z innymi podobnymi pytaniami. Edytuj swoją odpowiedź, aby dodać wyjaśnienie, w tym przyjęte założenia.
 – 
CertainPerformance
25 marzec 2019, 04:19