2012-12-23 16 views
5

EDIT
Oto, co się dzieje, aby zobaczyć: http://youtu.be/v1HrxYhzJZY.Nie można przewinąć UITableView na dole

Oto mój scenariusz:
Mam UITableView z 5 sekcjami i 12 komórkami. Pogląd ten jest otwierany z push segue i wszystko działa dobrze, to przewija itd

Trzy z tych komórek otworzyć MKMapView widok (poprzez push segue) kolejne wyskakuje MFMailComposeViewController.

Kiedy próbuję wrócić do mojego UITableView nie jestem już w stanie przewinąć do dołu. Mogę tylko przewinąć nieco, a następnie powróci do mojego widoku tabeli.

Próbowałem ustawić rozmiar ramki na viewWillAppear, próbowałem przeładować tableView, ale to nie działa!
Co może powodować ten problem?

EDIT
Moje wykonania są:

- (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

Prawdopodobnie warto podać następujące informacje: 1) Wspomniałeś, że nie możesz przewinąć do dołu, czy możesz przewijać w ogóle? Czy możesz przewijać większość drogi, z wyjątkiem sekcji u dołu widoku tabeli. 2) Twoje implementacje metod 'viewWillAppear' i' viewDidAppear' w kontrolce widoku widoku tabeli. –

+0

Pytanie zaktualizowane – jan267

+0

Dlaczego ustawiasz rozmiar zawartości? –

Odpowiedz

7

I rozwiązać ten problem przez mnie z tego prostego kodu:

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

    [self.tableView reloadData]; 
} 

i tak dzięki!

1

Użyj następującego kodu, aby przewinąć swoją tableView do żądanej sekcji/rzędu:

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

Sposób viewWillAppear: jest zbyt wcześnie, aby przewinąć widok tabeli. Widok nie został jeszcze dodany do hierarchii widoków na ekranie. Spróbuj to zrobić w viewDidLayoutSubviews.

+0

Dzięki, próbowałem, ale nadal nie działa. – jan267

0

Aby przewinąć tableView, który dziedziczy UIScrollView, trzeba użyć [self.tableView setContentOffset:CGPointMake(0,100) animated:YES]; a nie setContentSize

1

Ja też tego doświadczyłem. Wracając z widoku potomka, widok tabeli nie był już przewijany (zawsze odbijał się od góry). Widok Moje dziecko nie ma widoku mapy takiego jak twój.

Ponowne załadowanie widoku tabeli nie naprawiło go dla mnie.

Błąd pojawia się tylko w systemie iOS 7, a nie 6.1.

Uzyskuję dostęp do topLayoutGuide ... usunięcie tego dostępu (tylko właściwość czytaj!) Rozwiązało problem. WTF! Musi być magiczną własnością.

0

Również wczoraj spotkałem się z tym problemem! I naprawiłem to właśnie teraz!

Przeciągnąłem UITableView do UIViewController i po prostu wybrałem add missing contraints. Po uruchomieniu aplikacji UITableView nie mógł przewinąć do dołu.

I googled go i zobaczyłem a similar question in Stackoverflow.

Potem sprawdziłem ograniczenia dla UITableView, stwierdziłem, że istnieje ograniczenie ustawione na stałą wysokość dla UITableView. Następnie usunąłem ograniczenie i dodałem kolejne: Bottom Space to: Bottom Layout Guide = 0.

Rozwiązanie działa dla mnie.

Powiązane problemy