iOS在App Bundle中打开iBook文件

时间:2014-08-26 07:49:35

标签: ios

我在应用程序包中有一个iBook文件(比如SampleiBook.iba)(不在文档目录中)。 现在我只想在app中打开SampleiBook。我试过这个,

NSString *path = [[NSBundle mainBundle] pathForResource:@"SampleiBook" ofType:@".iba"];
NSString *stringURL = [@"ibooks://" stringByAppendingPathComponent:path];
NSURL *url = [NSURL URLWithString:stringURL];

if ([[UIApplication sharedApplication] canOpenURL:url])
{
    NSLog(@"Yes");
}
[[UIApplication sharedApplication] openURL:url];

iBook应用程序打开,仅显示iBook应用程序中的文件。但我希望打开应用程序包中的那个。

请指导我实现这一目标。

2 个答案:

答案 0 :(得分:1)

您似乎正在尝试从应用加载.iba(iBooks Author Book)文件。这不起作用,因为.iba是包含我认为你真正想要加载的.ibooks文件类型的源的文件。

这些天我很快写作。这是我刚刚跑过的一个快速例子。假设解开按钮是从笔尖或故事板连接的

    @IBOutlet weak var iBooksBtn:     UIButton! 
    @IBAction func iBooksBtnPressed(sender: AnyObject)
    {
        let ibookPath = NSBundle.mainBundle().pathForResource("Cupertino",
                                                               ofType: "ibooks")!
        let url       = NSURL(fileURLWithPath: ibookPath)
        let interactionController = UIDocumentInteractionController(URL:url!)
        interactionController.presentOptionsMenuFromRect(CGRectZero,   
                inView:self.iBooksBtn, animated:false)
    }

答案 1 :(得分:0)

您必须使用UIDocumentInteractionController在iBooks中打开iBook。

您可以轻松地为mian包中的iBook创建实例:

NSURL *iBookResourceURL = [[NSBundle mainBundle] URLForResource:@"SampleiBook" withExtension:@"iba"];
UIDocumentInteractionController *interactionController =
        [UIDocumentInteractionController interactionControllerWithURL: iBookResourceURL];
相关问题