Saya memiliki UISearchBar, dan saya ingin menampilkan UIViewController lain ketika saya mengklik tombol Cari dari UISearchBar. Saya menggunakan metode berikut untuk itu:
- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar
{
UIStoryboard* storyboard = [UIStoryboard storyboardWithName:@"Main"
bundle:nil];
UIViewController *add =
[storyboard instantiateViewControllerWithIdentifier:@"mainMenuViewController"];
[self.navigationController pushViewController:add animated:YES];
}
Masalahnya adalah animasi UIViewController yang muncul dipanggil dua kali. Saya melihat dua kali Kontroler lama digeser dari sisi kanan ke kiri.
Sekarang, jika saya menggunakan kode yang sama untuk menampilkan pengontrol baru ketika mengklik beberapa UIButton biasa, masalah animasinya hilang. Jadi sepertinya ini ada hubungannya dengan UISearchBar.
Metode delegasi searchBarSearchButtonClicked dipanggil hanya sekali.
Kode untuk mereproduksi masalah sangat minim, mungkin saya akan melampirkan contoh proyek nanti.
Tapi UIVIewCONtroller dengan bilah Pencarian terlihat seperti ini:
- (void)viewDidLoad {
[super viewDidLoad];
UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, 100, 20)];
searchBar.placeholder = NSLocalizedString(@"search a pub or a place", nil);
searchBar.delegate = self;
[self.navigationItem setTitleView:searchBar];
}
- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar
{
DLog(@"Filter searchBarSearchButtonClicked");
UIStoryboard* storyboard = [UIStoryboard storyboardWithName:@"Main"
bundle:nil];
UIViewController *add =
[storyboard instantiateViewControllerWithIdentifier:@"mainMenuViewController"];
[self.navigationController pushViewController:add animated:YES];
}
Masalahnya ada di iOS 8 dan 9.
Sunting:
Saya mengunggah contoh proyek di sini. Ini sangat minimalis.
Sunting2:
Jika saya menyajikan pengontrol seperti ini, bukan melalui pengontrol navigasi, animasi hanya ditampilkan satu kali. (Ini adalah animasi lain - dari bawah ke atas, yang sebelumnya dari kanan ke kiri). Tapi saya perlu melakukannya melalui pengontrol navigasi. Jadi masalahnya sepertinya terkait dengan Pencarian UISearchBar yang diklik + Pengontrol Navigasi.
[self presentViewController:add
animated:YES
completion:nil];
Tentu saja saya juga bisa menyebutnya tanpa animasi seperti ini:
[self.navigationController pushViewController:add animated:NO];
Tapi bagaimana jika saya ingin animasi.
Sunting3:
Saya mencoba menampilkan pengontrol kedua melalui segue, tetapi tidak membantu.
- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar
{
[self performSegueWithIdentifier:@"seg1" sender:self];
}
Sunting4:
Saya telah melaporkan bug ini ke Apple karena menurut saya ini pasti bug di UIKit. Bagaimanapun, jika seseorang menemukan solusinya, itu akan bagus.
self performSelector
. - person danh   schedule 01.07.2016