Xcode6telah menghapus Empty Applicationtemplat saat membuat proyek baru. Bagaimana kita bisa membuat aplikasi kosong (tanpa Storyboard) di dalam Xcode6dan di atas, seperti di versi sebelumnya?
Xcode6telah menghapus Empty Applicationtemplat saat membuat proyek baru. Bagaimana kita bisa membuat aplikasi kosong (tanpa Storyboard) di dalam Xcode6dan di atas, seperti di versi sebelumnya?
Jawaban:
Tidak ada opsi di dalam XCode6dan di atas versi untuk secara langsung membuat Aplikasi Kosong seperti pada XCode5dan sebelumnya. Tetapi kita masih bisa membuat aplikasi tanpa Storyboardmengikuti langkah-langkah ini:
Single View Application.Main.storyboarddan 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.xibdan Info.plistentri 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 Applicationtemplate untuk XCode' s template direktori.
Anda dapat men-download XCode 5's Empty Applicationtemplate dari sini , kemudian unzip dan copy ke /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/Project Templates/iOS/Applicationdirektori.
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 Applicationin 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>
#endiftambahkan "$ 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.swiftdan ubah func scenedari: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 namekuncinya.
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 viewoutlet ke viewobjek 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 8dan Swift 3.
Hapus saja .storyboardfile itu, maka secara otomatis akan menghapus referensi yang sesuai dari Anda .plistdan di AppDelegate.swifttambahkan 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.swiftsebagai 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