Xcode6
telah menghapus Empty Application
templat saat membuat proyek baru. Bagaimana kita bisa membuat aplikasi kosong (tanpa Storyboard) di dalam Xcode6
dan di atas, seperti di versi sebelumnya?
Xcode6
telah menghapus Empty Application
templat saat membuat proyek baru. Bagaimana kita bisa membuat aplikasi kosong (tanpa Storyboard) di dalam Xcode6
dan di atas, seperti di versi sebelumnya?
Jawaban:
Tidak ada opsi di dalam XCode6
dan di atas versi untuk secara langsung membuat Aplikasi Kosong seperti pada XCode5
dan sebelumnya. Tetapi kita masih bisa membuat aplikasi tanpa Storyboard
mengikuti langkah-langkah ini:
Single View Application
.Main.storyboard
dan LaunchScreen.xib
(pilih, klik kanan, dan pilih untuk menghapusnya dari proyek, atau menghapusnya sepenuhnya).Info.plist
file.Swift 3 ke atas:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool
{
self.window = UIWindow(frame: UIScreen.main.bounds)
self.window?.backgroundColor = UIColor.white
self.window?.makeKeyAndVisible()
return true
}
Swift 2.x:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool
{
self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
self.window?.backgroundColor = UIColor.whiteColor()
self.window?.makeKeyAndVisible()
return true
}
Tujuan-C:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
self.window.rootViewController = [[ViewController alloc] init];
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
return YES;
}
LaunchScreen.xib
dan Info.plist
entri yang sesuai . Tanpa itu, aplikasi tidak akan mengambil seluruh ukuran layar pada iPhone yang lebih besar, yang jelek.
Pendekatan sederhana akan menyalin XCode 5
's Empty Application
template untuk XCode
' s template direktori.
Anda dapat men-download XCode 5
's Empty Application
template dari sini , kemudian unzip dan copy ke /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/Project Templates/iOS/Application
direktori.
PS pendekatan ini bekerja dengan cepat juga!
Sunting
Seperti yang disarankan oleh @harrisg dalam komentar di bawah, Anda dapat menempatkan templat yang disebutkan di atas dalam ~/Library/Developer/Xcode/Templates/Project Templates/iOS/Application/
folder sehingga mungkin tersedia bahkan jika Xcode diperbarui.
Dan jika tidak ada direktori seperti itu, maka Anda mungkin harus membuat struktur direktori ini: Templates/Project Templates/iOS/Application/
di~/Library/Developer/Xcode/
Dengan menggunakan pendekatan sederhana ini saya dapat membuat Empty Application
in XCode 6
. (Cuplikan layar terlampir di bawah)
Semoga ini membantu!
Ada beberapa langkah lagi yang perlu Anda lakukan:
Jadi di sini adalah tutorial lengkap:
tambahkan file "[nama aplikasi] -Prefix.pch" ke file pendukung dengan konten:
#import <Availability.h>
#ifndef __IPHONE_3_0
#warning "This project uses features only available in iOS SDK 3.0 and later."
#endif
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#endif
tambahkan "$ SRCROOT / $ PROJECT_NAME / [nama file pch]" ke pengaturan proyek -> Pengaturan Bangun -> Apple LLVM 6.0 - Bahasa -> "Prefix Header"
menerapkan application:didFinishLaunchingWithOptions:
metode:
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
//Override point for customization after application launch.
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
return YES;
Jawaban Akhils sepenuhnya benar. Bagi kita yang menggunakan Swift, akan seperti ini:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
self.window?.backgroundColor = UIColor.whiteColor()
self.window?.makeKeyAndVisible()
return true
}
Xcode 9.3.1 dan Swift 4
Setelah itu langkah-langkah pergi ke AppDelegate.swift dan dalam fungsi didFinishLaunchingWithOptions tulis selanjutnya:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
window = UIWindow(frame: UIScreen.main.bounds)
window?.makeKeyAndVisible()
window?.rootViewController = UINavigationController(rootViewController: ViewController())
return true
}
Xcode 11.2.1 dan Swift 5
Setelah itu langkah-langkah pergi ke SceneDelegate dan dalam adegan fungsi tulis berikutnya:
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
// Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
// If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
// This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).
guard let windowScene = (scene as? UIWindowScene) else { return }
window = UIWindow(frame: windowScene.coordinateSpace.bounds)
window?.windowScene = windowScene
window?.rootViewController = ViewController()
window?.makeKeyAndVisible()
}
Ada satu langkah lagi yang perlu Anda lakukan:
1) menghapus nama dasar file storyboard utama dalam file plist
//AppDelegate.h
@property (strong, nonatomic) UIViewController *viewController;
@property (strong, nonatomic) UINavigationController *nav;
//AppDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {`enter code here`
// Override point for customization after application launch.
CGRect screenBounds = [[UIScreen mainScreen] bounds];
UIWindow *window = [[UIWindow alloc] initWithFrame:screenBounds];
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.viewController = [[UIViewController alloc] initWithNibName:@"ViewController" bundle:nil];
self.nav = [[UINavigationController alloc] initWithRootViewController:self.viewController];
[window setRootViewController: self.nav];
[window makeKeyAndVisible];
[self setWindow:window];
return YES;
}
Pembaruan: Swift 5 dan iOS 13:
SceneDelegate.swift
dan ubah func scene
dari:func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
// Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
// If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
// This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).
guard let _ = (scene as? UIWindowScene) else { return }
}
untuk
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
// Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
// If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
// This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).x
if let windowScene = scene as? UIWindowScene {
let window = UIWindow(windowScene: windowScene)
window.rootViewController = ViewController()
self.window = window
window.makeKeyAndVisible()
}
}
Saya memiliki templat Aplikasi Kosong asli yang digunakan dalam versi Xcode sebelum Xcode 6. Saya telah mengunggahnya di sini .
Anda dapat mengunduhnya dan menempelkannya di direktori template Xcode secara manual atau menginstalnya menggunakan manajer paket untuk Xcode, Alcatraz . Cukup cari Aplikasi Kosong Xcode .
Hapus file Main.storyboard
Ini bisa dengan mudah dihapus.
Perbarui file ProjectName-Info.plist
Hapus Main storyboard base file name
kuncinya.
Buat file nib dan tautan ke pengontrol tampilan proyek
1.Buat file nib (File -> New -> File -> View)
2. Perbarui File's Owner's
kelas untuk apa pun yang disebut pengontrol tampilan proyek
3.Link File's Owner's
view
outlet ke view
objek dalam file nib
Perbarui delegasi aplikasi
1. Impor file header pengontrol tampilan proyek
2. Perbarui :didFinishLaunchingWithOptions:
metode aplikasi :
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
MyViewController *viewController = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
self.window.rootViewController = viewController;
[self.window makeKeyAndVisible];
return YES;
}
Untuk Xcode 8
dan Swift 3
.
Hapus saja .storyboard
file itu, maka secara otomatis akan menghapus referensi yang sesuai dari Anda .plist
dan di AppDelegate.swift
tambahkan kode berikut.
let initialViewController = UIViewController() initialViewController.view.backgroundColor = .white window = UIWindow(frame: UIScreen.main.bounds) window?.rootViewController = initialViewController window?.makeKeyAndVisible()
Anda dapat menulis ViewCountroller kustom Anda sendiri dan menggunakannya AppDelegate.swift
sebagai milik Anda self.window?.rootViewController
, cukup ganti UIViewController dengan ViewController Anda sendiri dalam kode di atas.
Saya menggunakan XCode6 Beta & Saya mencari solusi lain untuk masalah ini dengan menambahkan template kosong dari XCode5.xx ke XCode6 Beta.
Untuk klik kanan ini pada XCode5.xx di Aplikasi klik 'Tampilkan Konten Paket' dan salin 'Empty Application.xctemplate' dari jalur yang diberikan
Isi / Pengembang / Platform / iPhoneOS.platform / Pengembang / Perpustakaan / Xcode / Templat / Proyek Templat / Aplikasi
Sekarang keluar dari Window & buka jalur yang diberikan untuk XCode6
Isi / Pengembang / Platform / iPhoneOS.platform / Pengembang / Perpustakaan / Xcode / Templat / Proyek Templat / iOS / Aplikasi /
Tempel 'Empty Application.xctemplate' di dalam folder Aplikasi. Sekarang restart XCode6 dengan berhenti & membuat proyek baru. Anda akan mendapatkan opsi 'Aplikasi Kosong'.
Sekarang ketika saya membuat proyek Kosong baru, file .pch secara otomatis ditambahkan dalam proyek (Yang harus kita tambahkan secara manual di XCode6)
Semoga ini berhasil
Anda dapat membuat template proyek Anda sendiri untuk Xcode. Untuk permintaan Anda, Anda dapat menggunakan templat di situs ini:
Yang lain sudah menjelaskan bagaimana cara menghilangkan storyboard, jadi saya akan melewatkan yang itu di sini. Ini adalah bagaimana saya lebih suka melakukannya dalam kode saya dengan chaining yang kurang opsional (ditulis dalam Swift 3.1):
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
let window = UIWindow(frame: UIScreen.main.bounds)
window.backgroundColor = .white
window.rootViewController = MyRootViewController()
window.makeKeyAndVisible()
self.window = window
return true
}
perbarui Xcode 11 dan ios 13. Setelah Anda mengatur semuanya tetapi masih melihat layar hitam, itu karena siklus hidup ditangani oleh UISceneDelegate dan ketika Anda membuat proyek baru, itu akan secara otomatis menghasilkan UISceneDelegate.m dan UISceneDelegate.h. Untuk kembali ke masa lalu sebelum kita terbiasa dengan UISceneDelegate. langkah-langkah berikut dapat membantu:
hapus Application Scene Manifest in plist.
hapus Application Scene Manifest.h dan Application Scene Manifest.m
hapus kode di bawah tanda #pragma - siklus hidup UISceneSession di APPdelegate.m
tambahkan @property (strong, nonatomic) UIWindow * window; di APPdelegate.h