Katakanlah saya memiliki tampilan UIButton
tab dalam satu di aplikasi iPhone saya, dan saya ingin membuka tab lain di bilah tab di TabBarController
. Bagaimana saya menulis kode untuk melakukan ini?
Saya berasumsi saya membongkar tampilan yang ada dan memuat tampilan tab tertentu, tetapi saya tidak yakin bagaimana menulis kode dengan tepat.
iphone
objective-c
ios
uitabbarcontroller
rottendevice
sumber
sumber
Jawaban:
Coba kode ini di Swift atau Objective-C
Cepat
Objektif-C
sumber
-setSelectedViewController:
.Perhatikan bahwa tab diindeks mulai dari 0. Jadi, potongan kode berikut berfungsi
pergi ke tab kelima di bilah.
sumber
Pendapat saya adalah bahwa
selectedIndex
menggunakan atauobjectAtIndex
tidak selalu merupakan cara terbaik untuk mengganti tab. Jika Anda menyusun ulang tab, pemilihan indeks dengan kode keras mungkin mengacaukan perilaku aplikasi Anda sebelumnya.Jika Anda memiliki referensi objek pengontrol tampilan yang ingin Anda alihkan, Anda bisa melakukan:
Tentu saja Anda harus memastikan, itu
myViewController
benar - benar ada dalam daftartabBarController.viewControllers
.sumber
Anda cukup mengatur
selectedIndex
properti pada UITabBarController ke indeks yang sesuai dan tampilan akan berubah seperti pengguna mengetuk tombol tab.sumber
selectedIndex
juga tidak berfungsi untuk saya dengan indeks> 4, tetapiselectedViewController
tidak.Saya mencoba apa yang disarankan oleh Disco S2, sudah dekat tapi inilah yang akhirnya berhasil untuk saya. Ini dipanggil setelah menyelesaikan tindakan di dalam tab lain.
sumber
Untuk kasus di mana Anda mungkin memindahkan tab, berikut adalah beberapa kode.
sumber
Seperti solusi Stuart Clark tetapi untuk Swift 3:
Gunakan seperti ini:
Harap perhatikan bahwa tabController saya terhubung ke viewControllers di belakang navigationControllers. Tanpa navigationControllers akan terlihat seperti ini:
sumber
Saya ingin dapat menentukan tab mana yang ditunjukkan oleh kelas daripada indeks karena saya pikir itu dibuat untuk solusi yang kuat yang kurang tergantung pada bagaimana Anda memasang IB. Saya tidak menemukan solusi Disco atau Joped untuk bekerja, jadi saya membuat metode ini:
Anda menyebutnya seperti ini:
Semoga ini bermanfaat bagi seseorang
sumber
Masalah saya sedikit berbeda, saya perlu beralih dari satu childViewController di 1st tabBar ke home viewController dari 2nd tabBar. Saya cukup menggunakan solusi yang disediakan di lantai atas:
Namun ketika beralih ke beranda tabBar ke-2, kontennya tidak terlihat. Dan ketika saya debug, viewDidAppear, viewWillAppear, viewDidLoad, tidak ada satupun yang dipanggil. Solusi saya adalah menambahkan kode berikut di UITabBarController:
sumber
Gunakan dalam
AppDelegate.m
file:sumber
Seperti solusi Stuart Clark tetapi untuk Swift 3 dan menggunakan pengidentifikasi restorasi untuk menemukan tab yang benar:
Gunakan seperti ini ("Manusia" dan "Robot" juga harus diatur dalam storyboard untuk viewController tertentu dan ID Pemulihannya, atau gunakan ID Storyboard dan centang "gunakan storyboard ID" sebagai ID pemulihan):
Harap perhatikan bahwa tabController saya terhubung ke viewControllers di belakang navigationControllers. Tanpa navigationControllers akan terlihat seperti ini:
sumber
sumber