Apa yang saya coba lakukan adalah mengklik tombol (yang dibuat dalam kode) dan meminta pemanggil tampilan pengendali yang berbeda kemudian menjalankan fungsi di pengendali tampilan baru.
Saya tahu ini bisa dilakukan dengan relatif mudah di IB tetapi itu bukan pilihan.
Contoh dari apa yang ingin saya lakukan adalah jika Anda memiliki dua pengontrol tampilan satu dengan layar splash rumah. Pengontrol tampilan lain memiliki jalan melalui rumah di bahwa Anda dapat pergi melalui semua kamar dalam urutan tertentu. Layar splash akan memiliki tombol untuk setiap kamar yang akan memungkinkan Anda untuk melompat ke titik mana pun saat berjalan.
sumber
Dan jika ada yang bertanya-tanya bagaimana melakukan ini di
swift
:sumber
nil
? Bukankah itu sebuah aplikasi SELALU memiliki AppDelegate ?!sharedApplication()
harus diganti denganshared
. yaitu, hapus "Aplikasi" dan tanda kurung. Jadi kode kerja penuh pada Swift 5.2 adalah:if let myDelegate = UIApplication.shared.delegate as? AppDelegate { myDelegate.someMethod() }
Kedengarannya Anda hanya perlu
UINavigationController
pengaturan?Anda bisa mendapatkan di
AppDelegate
mana saja dalam program melaluiDi delegasi aplikasi Anda, Anda harus memiliki pengaturan pengontrol navigasi Anda, baik melalui IB atau dalam kode.
Dalam kode, anggap Anda telah membuat viewcontroller 'Ikhtisar rumah' Anda sudah akan menjadi seperti ini di
AppDelegate
didFinishLaunchingWithOptions
...Setelah ini, Anda hanya perlu viewcontroller per 'kamar' dan aktifkan yang berikut saat acara klik tombol diambil ...
Saya belum menguji kode di atas jadi maafkan kesalahan sintaksis tapi semoga kode semu membantu ...
sumber
Beginilah cara saya melakukannya.
Jangan lupa impor.
sumber
Ikuti saja langkah-langkah ini
1. impor delegasi aplikasi Anda di kelas Anda di mana Anda ingin objek delegasi aplikasi.
2.di dalam kelas Anda buat instance objek delegasi aplikasi Anda (Pada dasarnya singleton).
3.Sekarang panggil metode menggunakan pemilih
atau langsung oleh
untuk cepat
saya akan merekomendasikan yang pertama. Jalankan dan Pergi.
sumber
Itu menghindari harus menyertakan AppDelegate.h Anda di mana-mana. Ini adalah pemeran sederhana yang bisa bertahan lama, memungkinkan untuk mengembangkan Kontroler independen dan menggunakannya kembali di tempat lain tanpa perlu khawatir tentang nama kelas dan seterusnya ...
Nikmati
sumber
Banyak jawaban bagus sudah ditambahkan. Meskipun saya ingin menambahkan sesuatu yang paling cocok untuk saya.
dan itu saja. Gunakan di seluruh aplikasi seperti konstanta.
misalnya
Jangan lupa untuk mengimpor file AppDelegate.h Anda dalam file .pch atau macro yang sesuai.
sumber
Jika seseorang memerlukan hal yang sama di Xamarin (Xamarin.ios / Monotouch), ini bekerja untuk saya:
(Perlu menggunakan UIKit;)
sumber
Dan jika Anda memerlukan akses ke delegasi ekstensi WatchKit Anda dari pengontrol tampilan di watchOS:
sumber
Pembaruan untuk Swift 3.0 dan lebih tinggi
memanggil metode di atas dari controller Anda dengan mengikuti
Keluaran:
sumber
Anda dapat menambahkan
#define uAppDelegate (AppDelegate *)[[UIApplication sharedApplication] delegate]
dalam proyek AndaPrefix.pch
file tersebut dan kemudian memanggil metode apapun dari AndaAppDelegate
dalamUIViewController
dengan kode di bawah ini.sumber
Bahkan jika secara teknis layak, BUKAN pendekatan yang baik. Ketika Anda mengatakan: "Layar splash akan memiliki tombol untuk setiap kamar yang akan memungkinkan Anda untuk melompat ke titik mana pun saat berjalan." Jadi Anda ingin melewati appdelegate untuk memanggil pengontrol ini melalui acara tohc pada tombol?
Pendekatan ini tidak mengikuti pedoman Apple dan memiliki banyak kelemahan.
sumber
Pada tahun 2020, iOS13, xCode 11.3. Apa yang berfungsi untuk Objective-C adalah:
#import "AppDelegate.h"
Ini bekerja untuk saya, saya harap sama untuk Anda! : D
sumber