我在popover中遇到了一个下载管理器的问题。
以下是我现在的样子:
当您点击我的仪表板中的任何文件时,该文件会自动附加到我的下载管理器。但是在momemt我需要在我的单元格中点击下载开始每次下载。
现在我想开始下载而不会看到Popover,如果我点击popover,我会看到我的文件的进度。
这里的问题是,我在downloadmanager中有一个IBOutlet用于我的表,当弹出窗口不存在时,这是nil。
所以我的整个FileDownloadHandlerClass都没有用,因为我有很多对我的Outlet的引用。
这是一些代码:
//在MainViewController中创建管理器实例
let manager = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("FileDownloadHandler") as FileDownloadHandlerViewController
//在barButtonClick
上@IBAction func downloadManagerButtonPressed(sender: AnyObject) {
let navController = UINavigationController(rootViewController: manager)
let popover = UIPopoverController(contentViewController: navController)
popover.popoverContentSize = manager.view.frame.size
popover.presentPopoverFromBarButtonItem(sender as UIBarButtonItem, permittedArrowDirections: UIPopoverArrowDirection.Left | .Up, animated: true)
}
//这就是我尝试开始下载的方式
func addFileToFileHandler(notification: NSNotification){
var fileObject:Files = notification.object as Files
let fileurl = fileObject.url
let filetitle = fileObject.filetitle
let fileuuid = fileObject.fileuuid
// this is my global Files Dictionary
arrFileDownloadData.append(FileDownloadInfo(fileuuid: fileuuid, title: filetitle, source: fileurl))
// Start first download automatically. (only for test, normally i know the cell index)
manager.startDownload(0)
}
那么有机会让我的IBOutlet可以在课堂外访问吗?还是其他想法?或者我应该在我的mainView中为我的Popover创建我的TableView并将其添加为子视图,以便我可以访问它?
提前致谢。
答案 0 :(得分:0)
manager
不是popover的实例吗?它是nav的根控制器,其中nav是popover的contentController。你在本地声明popover:
let popover = UIPopoverController(contentViewController: navController)
如果可以的话,你可以尝试为你popover
提供类似的全局参考:
@IBAction func downloadManagerButtonPressed(sender: AnyObject)
{
// if globalPopoverReferenceVar is not yet initialized
if( globalPopoverReferenceVar == nil )
{
let navController = UINavigationController(rootViewController: manager)
let popover = UIPopoverController(contentViewController: navController)
popover.popoverContentSize = manager.view.frame.size
// like this
globalPopoverReferenceVar = popover
}
globalPopoverReferenceVar!.presentPopoverFromBarButtonItem(sender as UIBarButtonItem, permittedArrowDirections: UIPopoverArrowDirection.Left | .Up, animated: true)
}