Загрузите (и отобразите) .XIB из Интернета - PullRequest
2 голосов
/ 11 апреля 2010

Я хочу иметь возможность загрузить (через запрос NSURLConnection) файл .XIB и представить его в виде.Я реализовал NSURLConnection, и, конечно же, когда соединение будет установлено, у меня останется NSString XML-данных, представляющих файл XIB.Пример: (только первые несколько строк из многих)

<?xml version="1.0" encoding="UTF-8"?>
<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.10">
    <data>
        <int key="IBDocument.SystemTarget">800</int>
        <string key="IBDocument.SystemVersion">10D573</string>
        <string key="IBDocument.InterfaceBuilderVersion">762</string>
        <string key="IBDocument.AppKitVersion">1038.29</string>
        <string key="IBDocument.HIToolboxVersion">460.00</string>
        ET CETERA...

Я просмотрел документацию и считаю, что не могу использовать "initWithNibName:", поскольку он извлекается из Интернета.Я считаю, что мне нужно сохранить .XIB в каталоге документов приложения, а затем использовать «loadNibFile: externalNameTable: withZone:»

По сути, я хочу иметь приложение для iPad, и естьнебольшое окно 320x480, где может быть отображен .XIB, загруженный из Интернета.Если я могу прикрепить его локально к ViewController, тем лучше, но не совсем необходимо.

Я просто не совсем уверен, как мне использовать "loadNibFile: externalNameTable: withZone:" Может кто-нибудь дать мне какой-нибудь совет илипример?

Заранее спасибо!

Ответы [ 2 ]

3 голосов
/ 12 апреля 2010

loadNibFile: externalNameTable: withZone: это метод AppKit, поэтому он работает только на Mac OS, а не на iPhone или iPad.

В SDK 3.2 вы можете использовать - [UIViewController initWithNibName: bundle:] или - [NSBundle loadNibNamed: owner: options:] в зависимости от того, хотите ли вы, чтобы владельцем файла был UIViewController. Хотя вы правы в том, что вы не можете загрузить .xib и установить его в ресурсы основного пакета, вы, вероятно, можете загрузить пакет, сохранить его в своем каталоге Documents, передать его в + [NSBundle bundleWithPath:], а затем извлечь .xib из него, используя initWithNibName: bundle: или loadNibNamed: owner: options.

Я не пробовал это, но похоже, что это должно работать. Мне будет любопытно узнать, так ли это.

Мне также будет очень интересно узнать, принимает ли Apple это приложение. Похоже, что это приведет к проверке раздела 3.2.2 Соглашения iPhone SDK.

1 голос
/ 13 апреля 2010

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

Если вы скомпилируете файлы .xib в правильный файл iPhone .nib, вы сможете поместить их во внешний пакет и загрузить этот пакет в каталог документов приложения. Затем вы можете создать экземпляр NSBundle, используя +bundleWithPath: или тому подобное, и передать имя и пакет Nib в –initWithNibName:bundle:.

UIViewController.
...