5

olarak adlandırıldı. Genellikle, navigationBar'ın altında (bu tabloViewView başlığı olarak ayarlıyorum) gezinmek için [self.tableView setContentOffset:CGPointMake(0,40)]; kullanıyorum. Her şey viewDidLoad'da iyi çalışır: görünüm yüklendiğinde searchBar, navigationBar'ın altındadır. Sonrahide UISearchBar'ı aşağıdaki iptalden sonra UINavigationBarButton,

- (void)searchDisplayControllerWillEndSearch:(UISearchDisplayController *)controller 

kod

[self.tableView setContentOffset:CGPointMake(0,40)] 

aynı çizgiyi koymak ama bu bir şeyi yapar: Searchbar Düğme tıklandığında iptal görünür kalır. Sorun nedir?

cevap

1

Aşağıdaki yöntem ana iş parçacığından çağrılıyor mu?

- (void)searchDisplayControllerWillEndSearch:(UISearchDisplayController *)controller 

Böyle denetleyebilirsiniz:

if ([NSThread isMainThread]) { 
    NSLog(@"Yes it is the main thread."); 
} 

Aksi takdirde, herhangi bir görünüm değişikliği ekranda kaydetmez. Ayrı bir iş parçacığı manzarayı değiştirmek gerekiyorsa bunu kullanabilirsiniz:

[self performSelectorOnMainThread:@selector(XXX) withObject:nil waitUntilDone:NO]; 

senin sorunu ise emin değilim, ama bakmaya başlardım nereye kadar.

4

aşağıdaki yöntem yapmalı:

-(void)searchDisplayControllerDidEndSearch:(UISearchDisplayController *)controller{ 
    [self.tableView setContentOffset:CGPointMake(0,40)];  
} 
+0

Eğer tableview UISearchBar ekleyin emin olun. o zaman sadece contentOffset kavramı çalışacaktır. –