Xcode6
đã loại bỏ Empty Application
mẫu khi tạo một dự án mới. Làm cách nào chúng ta có thể tạo một ứng dụng trống (không có Storyboard) trong Xcode6
và trên, như trong các phiên bản trước?
Xcode6
đã loại bỏ Empty Application
mẫu khi tạo một dự án mới. Làm cách nào chúng ta có thể tạo một ứng dụng trống (không có Storyboard) trong Xcode6
và trên, như trong các phiên bản trước?
Câu trả lời:
Không có tùy chọn trong XCode6
và phiên bản trên để trực tiếp tạo Ứng dụng trống như trong XCode5
và trước đó. Nhưng chúng ta vẫn có thể tạo một ứng dụng mà không cần làm Storyboard
theo các bước sau:
Single View Application
.Main.storyboard
và LaunchScreen.xib
(chọn chúng, nhấp chuột phải và chọn xóa chúng khỏi dự án hoặc xóa chúng hoàn toàn).Info.plist
tệp.Swift 3 trở lên:
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
}
Mục tiêu-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
và các Info.plist
mục tương ứng . Không có nó, ứng dụng sẽ không chiếm toàn bộ kích thước màn hình trên những chiếc iPhone lớn hơn, điều này thật xấu xí.
Một cách tiếp cận đơn giản sẽ được sao chép XCode 5
's Empty Application
mẫu để XCode
' s mẫu thư mục.
Bạn có thể tải XCode 5
's Empty Application
mẫu từ đây , sau đó giải nén nó và sao chép vào /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/Project Templates/iOS/Application
thư mục.
PS phương pháp này cũng hoạt động với swift!
Chỉnh sửa
Như được đề xuất bởi @harrisg trong một bình luận bên dưới, Bạn có thể đặt mẫu được đề cập ở trên trong ~/Library/Developer/Xcode/Templates/Project Templates/iOS/Application/
thư mục để có thể có sẵn ngay cả khi Xcode được cập nhật.
Và nếu không có thư mục như vậy, thì bạn có thể phải tạo cấu trúc thư mục này: Templates/Project Templates/iOS/Application/
trong~/Library/Developer/Xcode/
Sử dụng phương pháp đơn giản này tôi có thể tạo ra một Empty Application
trong XCode 6
. (Ảnh chụp màn hình đính kèm bên dưới)
Hi vọng điêu nay co ich!
Có một vài bước nữa mà bạn cần làm:
Vì vậy, đây là một hướng dẫn đầy đủ:
thêm tệp "[tên ứng dụng] -Prefix.pch" vào các tệp hỗ trợ có nội dung:
#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
thêm "$ SRCROOT / $ PRO DỰ_NAME / [tên tệp pch]" vào cài đặt dự án -> Cài đặt bản dựng -> Apple LLVM 6.0 - Ngôn ngữ -> "Tiêu đề tiền tố"
thực hiện application:didFinishLaunchingWithOptions:
phương pháp:
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;
Câu trả lời của Akhils là hoàn toàn chính xác. Đối với những người trong chúng ta sử dụng Swift, nó sẽ như thế này:
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 và Swift 4
Sau đó, các bước đi đến AppDelegate.swift và trong chức năng didFinishLaunchingWithOptions viết tiếp:
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 và Swift 5
Sau đó, các bước đi đến SceneDelegate và trong cảnh chức năng viết tiếp:
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()
}
Còn một bước nữa mà bạn cần làm:
1) xóa tên cơ sở tệp bảng phân cảnh chính trong tệp 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;
}
Cập nhật: Swift 5 và iOS 13:
SceneDelegate.swift
và thay đổi func scene
từ: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 }
}
đến
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()
}
}
Xóa tệp Main.storyboard
Điều này chỉ đơn giản có thể bị xóa.
Cập nhật tệp ProjectName-Info.plist
Bỏ Main storyboard base file name
chìa khóa.
Tạo một tệp nib và liên kết đến trình điều khiển xem của dự án
1. Tạo tệp nib (Tệp -> Mới -> Tệp -> Xem)
2. Cập nhật File's Owner's
lớp cho bất cứ điều gì mà trình điều khiển khung nhìn của dự án được gọi
3. Liên kết File's Owner's
view
ổ cắm với view
đối tượng trong tệp nib
Cập nhật đại biểu ứng dụng
1. Nhập tệp tiêu đề của trình điều khiển xem của dự án
2.Cập nhật :didFinishLaunchingWithOptions:
phương thức ứng dụng :
- (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;
}
Cho Xcode 8
và Swift 3
.
Chỉ cần xóa .storyboard
tệp, nó sẽ tự động xóa tham chiếu tương ứng từ bạn .plist
và trong AppDelegate.swift
mã thêm sau đây.
let initialViewController = UIViewController() initialViewController.view.backgroundColor = .white window = UIWindow(frame: UIScreen.main.bounds) window?.rootViewController = initialViewController window?.makeKeyAndVisible()
Bạn có thể viết ViewCountroll tùy chỉnh của riêng bạn và sử dụng trong đó AppDelegate.swift
như của bạn self.window?.rootViewController
, chỉ cần thay thế UIViewControll bằng ViewContoder của riêng bạn trong đoạn mã trên.
Tôi đang sử dụng XCode6 Beta và tôi đã tìm kiếm một giải pháp khác cho vấn đề này bằng cách thêm mẫu rỗng từ XCode5.xx vào XCode6 Beta.
Đối với điều này, nhấp chuột phải vào XCode5.xx trong Ứng dụng, nhấp vào 'Hiển thị nội dung gói' và sao chép 'Ứng dụng trống.xctemplate' từ đường dẫn cụ thể
Nội dung / Nhà phát triển / Nền tảng / iPhoneOS.pl platform / Nhà phát triển / Thư viện / Xcode / Mẫu / Mẫu dự án / Ứng dụng
Bây giờ hãy thoát khỏi Cửa sổ và mở đường dẫn đã cho cho XCode6
Nội dung / Nhà phát triển / Nền tảng / iPhoneOS.pl platform / Nhà phát triển / Thư viện / Xcode / Mẫu / Mẫu dự án / iOS / Ứng dụng /
Dán 'Ứng dụng trống.xctemplate' trong thư mục Ứng dụng. Bây giờ khởi động lại XCode6 bằng cách thoát và tạo dự án mới. Bạn sẽ nhận được tùy chọn 'Ứng dụng trống'.
Bây giờ khi tôi đang tạo dự án rỗng mới, một tệp .pch sẽ tự động được thêm vào trong dự án (Chúng ta phải thêm thủ công trong XCode6)
Hy vọng nó sẽ làm việc
Bạn có thể tạo mẫu dự án của riêng bạn cho Xcode. Đối với yêu cầu của bạn, bạn có thể sử dụng mẫu trên trang web này:
Những người khác đã giải thích làm thế nào để thoát khỏi bảng phân cảnh, vì vậy tôi sẽ bỏ qua phần này ở đây. Đây là cách tôi thích làm điều đó trong mã của mình với ít chuỗi tùy chọn hơn (được viết bằng 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
}
cập nhật trên Xcode 11 và ios 13. Sau khi bạn cài đặt mọi thứ nhưng vẫn thấy màn hình đen, đó là do vòng đời được xử lý bởi UISceneDelegate và khi bạn tạo một dự án mới, nó sẽ tự động tạo UISceneDelegate.m và UISceneDelegate.h. Để quay lại thời xưa trước khi chúng ta quen với UISceneDelegate. Các bước sau đây có thể giúp:
xóa Manifest ứng dụng cảnh trong plist.
xóa Cảnh ứng dụng Manifest.h và Cảnh ứng dụng Manifest.m
xóa mã dưới dấu #pragma - Vòng đời UISceneSession trong APPdelegate.m
thêm cửa sổ UIWindow * mạnh mẽ (không mạnh mẽ); trong APPdelegate.h