невозможно получить доступ к файлам .nib (XIB) из фреймворка в iOS - PullRequest
4 голосов
/ 12 декабря 2011

Я создал фреймворк из моей существующей кодовой базы и попытался использовать его в новой кодовой базе. Это работало нормально. Но мое приложение падает, когда я пытаюсь получить доступ к файлам пера, который является частью моего пакета фреймворка. Это код, который я использую для доступа к файлу XIB контроллеров представления.

testViewController *controller = [[testViewController alloc] initWithNibName:@"testViewController" bundle:nil]; [self.view addSubview:controller.view];

Приложение выходит из строя, не генерируя сообщения об ошибках или сбоях. Вот мои вопросы

1 - Можем ли мы добавить файлы XIB в нашу структуру

2 - Если да, как правильно добавить и получить доступ к файлам nib (xib) из фреймворка (в настоящее время я добавил их в " исходники компиляции вкладка "раздел моей" фазы сборки"в" настройках сборки")

Ответы [ 2 ]

4 голосов
/ 12 декабря 2011

Вам нужно написать название пакета, в котором вы пера. файлы хранятся, поэтому измените код выше на ...

testViewController *controller = [[testViewController alloc] initWithNibName:@"testViewController" bundle:yourBundle]; [self.view addSubview:controller.view];

здесь ваш пакет является объектом типа NSBundle. обратитесь к классу NSBundle для получения дополнительной информации

1 голос
/ 15 марта 2016

В Swift 2 - Для раскадровки:

let bundle = NSBundle(identifier:"com.bundileName.Name")
    let storyboard = UIStoryboard(name:"Storyboard", bundle:bundle!)
    let controller = storyboard.instantiateViewControllerWithIdentifier("ViewControllerId") as UIViewController
    presentViewController(controller, animated: true, completion: nil)

Для XIB:

let bundle = NSBundle(identifier:"com.bundileName.Name")
    if !(bundle == nil){
        let objtestViewController = testViewController(nibName: "testViewController", bundle: bundle)
        presentViewController(objtestViewController, animated: true, completion: nil)
    }

Swift 3 Раскадровка:

 let bundle = Bundle(identifier:"com.bundileName.Name")
    let storyboard = UIStoryboard(name:"Storyboard", bundle:bundle!)
    let controller = storyboard.instantiateViewController(withIdentifier: "ViewControllerId") as UIViewController
    present(controller, animated: true, completion: nil)

Xib

let bundle = NSBundle(identifier:"com.bundileName.Name")
if !(bundle == nil){
    let objtestViewController = testViewController(nibName: "testViewController", bundle: bundle)
    present(objtestViewController, animated: true, completion: nil)
}

Здесь имя пакета - это идентификатор пакета фреймворка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...