2012-12-23 1 views
5

EDIT
Dies ist, was passiert, so können Sie sehen: http://youtu.be/v1HrxYhzJZY.Kann nicht UITableView nach unten scrollen

Das ist mein Szenario:
Ich habe eine UITableView mit 5 Sektionen und 12 Zellen. Diese Ansicht wird geöffnet mit einem push segue und alles funktioniert gut, es scrollt usw.

Drei dieser Zellen öffnen Sie eine MKMapView Ansicht (durch eine push segue) noch erscheint ein MFMailComposeViewController.

Wenn ich versuche, gehe zurück zu meinem UITableView Ich bin nicht mehr in der Lage, nach unten scrollen. Ich kann nur scrollen ein bisschen und dann kehrt es an den Anfang meiner Tabellenansicht.

Ich habe versucht, die Rahmengröße auf viewWillAppear, ich habe versucht, die tableView nachzuladen, aber es funktioniert nicht!
Was könnte dieses Problem verursachen?

EDIT
Meine Implementierung sind:

- (void)viewDidLoad { 
    loaded = NO; 

    NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"my_url", self.userID]]; 
    NSURLRequest *request = [NSURLRequest requestWithURL:url]; 
    AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) { 
     loaded = YES; 

     self.user = JSON; 
     [self setUserValues]; 

     [self.tableView reloadData]; 

    } failure:nil]; 

    [operation start]; 

    [super viewDidLoad]; 
} 

- (void)viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:animated]; 

    [self.tableView setContentSize:CGSizeMake(320, 420)]; 
} 
+0

Es wäre wahrscheinlich nützlich, die folgenden Informationen zur Verfügung zu stellen: 1) Sie erwähnten, dass Sie nicht nach unten scrollen können, können Sie überhaupt scrollen? Können Sie mit Ausnahme eines Abschnitts am unteren Rand der Tabellenansicht den größten Teil des Bildlaufs durchführen? 2) Ihre Methoden 'viewWillAppear' und 'viewDidAppear' in der View-Steuerung der Tabellenansicht. –

+0

Frage aktualisiert – jan267

+0

Warum legen Sie die Inhaltsgröße fest? –

Antwort

7

ich das Problem von mir mit diesem einfachen Code gelöst:

- (void)viewDidAppear:(BOOL)animated { 
    [super viewDidAppear:animated]; 

    [self.tableView reloadData]; 
} 

Danke trotzdem!

1

den folgenden Code Verwenden Sie Ihre Tableview, um die gewünschten Abschnitt/Zeile zu blättern:

[tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:desiredRow inSection:desiredSection] atScrollPosition:UITableViewScrollPositionTop animated:NO]; 
5

Die viewWillAppear: Methode ist zu früh, das blättern Tabellenansicht. Die Ansicht wurde der Bildschirmhierarchie noch nicht hinzugefügt und wurde noch nicht angelegt. Versuchen Sie es in viewDidLayoutSubviews.

+0

Danke, ich habe es versucht, aber es funktioniert immer noch nicht. – jan267

0

die Tableview blättern, die sich von UIScrollView erbt, müssen Sie [self.tableView setContentOffset:CGPointMake(0,100) animated:YES]; verwenden und nicht die setContentSize

1

Ich habe das auch erlebt. Zurückkommend von der Kindansicht war die Tabellenansicht nicht mehr scrollbar (sie würde immer nach oben springen). Meine Kindansicht hat keine Kartenansicht wie Ihre.

Nachladen der Tabellenansicht hat es nicht für mich behoben.

Der Fehler wurde nur in iOS 7, nicht in 6.1 angezeigt.

Ich habe Zugriff auf topLayoutGuide ... Entfernen dieses Zugriffs (nur eine Eigenschaft lesen!) Das Problem behoben. WTF! Muss eine magische Eigenschaft sein.

0

Ich traf dieses Problem gestern auch! Und ich habe es gerade jetzt behoben!

Ich zog ein UITableView auf den UIViewController und wählte einfach add missing contraints. Wenn ich die App ausgeführt habe, konnte UITableView nicht nach unten scrollen.

Ich googelte es und sah a similar question in Stackoverflow.

Dann habe ich die Einschränkungen für die UITableView überprüft, fand ich ein Contraint setzte die feste Höhe für die UITableView. Dann entfernte ich das Contraint und fügte ein weiteres hinzu: Bottom Space to: Bottom Layout Guide = 0.

Die Lösung funktioniert für mich.