     override func viewDidLoad() {
         super.viewDidLoad()
         
+        // Настройка поисковой панели
+        searchController.searchResultsUpdater = self
+        searchController.searchBar.delegate = self
+        
+        searchController.dimsBackgroundDuringPresentation = false
+        searchController.hidesNavigationBarDuringPresentation = false
+        searchController.searchBar.searchBarStyle = .Prominent
+        definesPresentationContext = true
+        
         // Кастомизация tableView
         tableView.tableFooterView = UIView() // Чистим пустое пространство под таблицей
         

    
    // Менеджер загрузок начал новую загрузку
    func downloadManagerStartTrackDownload(download: Download) {
        if let trackIndex = trackIndexForDownloadTask(download.downloadTask) {
            dispatch_async(dispatch_get_main_queue(), {
                self.tableView.insertRowsAtIndexPaths([NSIndexPath(forRow: trackIndex, inSection: 0)], withRowAnimation: .Fade)
            })
        }
    }
    
    // Менеджер загрузок изменил состояние загрузки
    func downloadManagerUpdateStateTrackDownload(download: Download) {
        if let trackIndex = trackIndexForDownloadTask(download.downloadTask) {
            if pauseOrResumeTapped {
                pauseOrResumeTapped = false
                
                dispatch_async(dispatch_get_main_queue(), {
                    self.tableView.reloadRowsAtIndexPaths([NSIndexPath(forRow: trackIndex, inSection: 0)], withRowAnimation: .None)
                })
            } else {
                reloadTableView()
            }
        }
    }
    
    // Менеджер загрузок отменил выполнение загрузки
    func downloadManagerCancelTrackDownload(download: Download) {
        reloadTableView()
    }
    
    // Менеджер загрузок завершил загрузку

    
    // Вызывается когда часть данных была загружена
    func downloadManagerURLSession(session: NSURLSession, downloadTask: NSURLSessionDownloadTask, didWriteData bytesWritten: Int64, totalBytesWritten: Int64, totalBytesExpectedToWrite: Int64) {
        if !isSearched {
            if let downloadUrl = downloadTask.originalRequest?.URL?.absoluteString, download = activeDownloads[downloadUrl] {
                if let trackIndex = trackIndexForDownloadTask(downloadTask), let activeDownloadCell = tableView.cellForRowAtIndexPath(NSIndexPath(forRow: trackIndex, inSection: 0)) as? ActiveDownloadCell {
                    download.progress = Float(totalBytesWritten) / Float(totalBytesExpectedToWrite)
                    let totalSize = NSByteCountFormatter.stringFromByteCount(totalBytesExpectedToWrite, countStyle: NSByteCountFormatterCountStyle.Binary)
                    
                    let isCompleted = download.progress == 1 // Завершена ли загрузка
                    
                    dispatch_async(dispatch_get_main_queue(), {
                        activeDownloadCell.cancelButton.hidden = isCompleted
                        activeDownloadCell.pauseButton.hidden = isCompleted
                        activeDownloadCell.progressBar.progress = download.progress
                        activeDownloadCell.progressLabel.text =  isCompleted ? "Сохраняется..." : String(format: "%.1f%% из %@",  download.progress * 100, totalSize)
                    })
                }
            }
        }
    }
