Xcode 5 - iOS - 如何在没有 Storyboard 或 XIB 的情况下在 Xcode 中创建视图控制器以及如何将其配置为 AppDelegate 作为根视图

Posted

技术标签:

【中文标题】Xcode 5 - iOS - 如何在没有 Storyboard 或 XIB 的情况下在 Xcode 中创建视图控制器以及如何将其配置为 AppDelegate 作为根视图【英文标题】:Xcode 5 - iOS - How to Create a View Controller in Xcode without Storyboard or XIB and how to configure it into AppDelegate as the root view 【发布时间】:2014-05-21 20:52:53 【问题描述】:

是的,我已经从 ios 开发人员那里休息了一段时间,我又回到了混合状态,但遇到了以下问题:

我想以编程方式创建一个带有嵌入式 UIWebView 的视图控制器,不依赖任何 xib 或情节提要,但我不记得如何让 AppDelegate 显示我的视图控制器。

在所有文档下我能找到的只是将以下内容放在我的 AppDelegate 下

self.window = [[ViewController alloc] initWithNibName:@"blah" bundle: nil];

但由于我没有任何与我的 ViewController 文件关联的 xib,这将是无用的。

有人可以让我回到正确的道路上。

谢谢

【问题讨论】:

完全没有魔法。您只需定义您的自定义 VC 并让它的 loadView 方法创建所有将由 XIB 定义的组件。然后viewDidLoad 应该适当地调整组件的大小和位置。通常这比在 XIB 不能很好代表的情况下使用 XIB 更简单。 【参考方案1】:

AppDelegate.m:

CustomViewController *rootViewController = [CustomViewController new];

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.rootViewController = rootViewController;
[self.window makeKeyAndVisible];

CustomViewController.m 覆盖:

- (void)loadView 
    //Configure your view
    self.view = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

    //other stuff
    [self.view setBackgroundColor:[UIColor redColor]];

    UIButton *button = /* alloc init etc. */
    [self.view addSubview:button];

【讨论】:

感谢您的建议,我得到的只是黑屏(控制台中没有错误)我认为添加我的代码集可能会有所帮助,给我一个莫... 在 AppDelegate.m 下:- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions ViewController *rootViewController = [ViewController new]; self.window.rootViewController = rootViewController; [window makeKeyAndVisible]; return YES; ViewController.m 下:-(void)loadView [super viewDidLoad]; self.view = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)]; [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com"]]]; [self.view addSubview:webView]; 对格式问题表示歉意,自从我上 SO 以来已经有一段时间了 伙计..您必须配置视图...正常..您是否编写了所有正确的代码?查看我更新的答案..例如,现在我将红色设置为背景..现在你看到你的观点了吗? ;)【参考方案2】:

类 ViewController: UIViewController, UIPageViewControllerDataSource, CLLocationManagerDelegate,UITextFieldDelegate, UITableViewDataSource,UITableViewDelegate //创建一个位置管理器 让 locationManager = CLLocationManager()

//menu button
@IBOutlet weak var menu: UIBarButtonItem!

@IBOutlet weak var locationTextField: UITextField!
    didSet 
        locationTextField.delegate = self
        locationTextField.text = ""
    


func numberOfSectionsInTableView(tableView: UITableView) -> Int 
    return 1


func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
    return globalSearchText.searchArrayLocation.count


func tableView(tableView: UITableView, performAction action: Selector, forRowAtIndexPath indexPath: NSIndexPath, withSender sender: AnyObject?) 
    locationTextField.text = globalSearchText.searchArrayLocation[indexPath.row]

【讨论】:

以上是关于Xcode 5 - iOS - 如何在没有 Storyboard 或 XIB 的情况下在 Xcode 中创建视图控制器以及如何将其配置为 AppDelegate 作为根视图的主要内容,如果未能解决你的问题,请参考以下文章

在没有 XCODE 5 的运行 iOS7 的设备上测试 iOS 6 应用程序

Xcode7 低版本iOS系统上下有黑边的问题

Xcode7 低版本iOS系统上下有黑边的问题

如何使动画在 Xcode 5 iOS 7 中工作?

如何在带有 ios 7.0.2 的 iphone 5 上运行 xcode 5 项目

Xcode 4.2/iOS 5 下控制台中没有异常堆栈跟踪?