以编程方式设置视图
Posted
技术标签:
【中文标题】以编程方式设置视图【英文标题】:Setting the view programmatically 【发布时间】:2016-07-08 12:16:18 【问题描述】:我正在尝试在不使用 xcode 中的情节提要和目标 c 的情况下设置我的项目。
我的应用代理:
.h
#import <UIKit/UIKit.h>
#import "ViewController.h"
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
@end
.m
#import "AppDelegate.h"
@interface AppDelegate ()
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
ViewController *vc = [[ViewController alloc] init];
self.window.rootViewController = vc;
return YES;
etc...
我的 viewController 文件:
.m
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad
[super viewDidLoad];
UIView *view = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
view.backgroundColor = [UIColor redColor];
[self.view addSubview:view];
我认为我的代码是正确的,当我运行它时我们应该有一个红屏,但我只得到一个黑屏。有人可以告诉我我是否忘记了什么或者与项目设置有关。谢谢。
【问题讨论】:
我不知道可视化调试器,但我现在正在阅读它。但是,我刚刚在我的 viewDidLoad 中添加了一个 NSLog 并且它没有被调用。为什么是这样?我想到了这条线:'self.window.rootViewController = vc;'自动调用上述方法??交易 【参考方案1】:添加
self.window = [[UIWindow alloc] initWithFrame:UIScreen.mainScreen.bounds];
致您的application:didFinishLaunchingWithOptions:
【讨论】:
【参考方案2】:您缺少两个步骤。
初始化窗口:
self.window = [[UIWindow alloc] initWithFrame:UIScreen.mainScreen.bounds];
使窗口键 & 可见:
[self.window makeKeyAndVisible];
总而言之,您的代码应该如下所示:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
// Initialize the window
self.window = [[UIWindow alloc] initWithFrame:UIScreen.mainScreen.bounds];
// Add the view controller to the window
ViewController *vc = [[ViewController alloc] init];
self.window.rootViewController = vc;
// Make window key & visible
[self.window makeKeyAndVisible];
return YES;
【讨论】:
以上是关于以编程方式设置视图的主要内容,如果未能解决你的问题,请参考以下文章