Ponieważ Eureka służy do tworzenia nowego rekordu, który zawiera różne typy danych, z których jeden to MediaPicker
, zastanawiam się, jak zaprezentować jego viewController.Jak wyświetlić viewController za pomocą wiersza w formularzach Eureka
Który wiersz wykona zadanie? PushRow
lub ButtonRow
Oto moja klasa, gdzie staram się stworzyć to.
import UIKit
import MediaPlayer
import Eureka
public final class MusicRow<T: Equatable> : SelectorRow<T, PushSelectorCell<T>, SelectorViewController<T>>, RowType {
public required init(tag: String?) {
super.init(tag: tag)
presentationMode = .Show(controllerProvider: ControllerProvider.Callback {
return AddMusicViewController(){ _ in }
}, completionCallback: { vc in
vc.navigationController?.popViewControllerAnimated(true)
})
}
}
public class AddMusicViewController: MPMediaPickerController, MPMediaPickerControllerDelegate {
var musicPicker: MPMediaPickerController!
public var row: RowOf<MPMediaItemCollection>!
public var completionCallback : ((UIViewController) ->())?
public override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
// Setup sections/rows for tableView
addMusic()
}
// Initialize musicPicker and customize it
func addMusic() {
musicPicker = MPMediaPickerController.self(mediaTypes:.Music)
musicPicker.delegate = self
musicPicker.allowsPickingMultipleItems = true
view.addSubview(musicPicker.view)
}
// After selection, store the data into an array
public func mediaPicker(mediaPicker: MPMediaPickerController, didPickMediaItems mediaItemCollection: MPMediaItemCollection) {
musicTemp = nil
musicTemp = mediaItemCollection
if musicTemp == nil {
noMusic = true
} else {
noMusic = false
}
completionCallback?(self)
}
// Cancel mediaPickerController
public func mediaPickerDidCancel(mediaPicker: MPMediaPickerController){
// Dismiss the picker if the user canceled
noMusic = true
completionCallback?(self)
}
}
Poniżej znajduje się błąd, z którym się spotykam.
@EricAya Cóż, właściwie nie. Jestem całkowicie nowy w rozwoju iOS. I Eureka wydaje się być bardzo dobrym szkieletem, jeśli chodzi o formy. Używam więc mojej aplikacji. Ale gdy istnieje niestandardowa implementacja, nie jestem w stanie powiązać jej poprawnie. Co zasugerowałbyś w tym przypadku? Dzięki ... – Shyam
Zrobiłem to również. Błąd zgłaszany jest, nie może powoływać się inicjator dla typu „AddMusicViewController” z listy argumentów typu „((_) -> _)” – Shyam
Hi Shyam, chcę przedstawić GooglePlaces autouzupełniania ViewController sprawie wyboru rzędu (https: //developers.google.com/places/ios-api/autocomplete) czy możliwe jest użycie twojego kodu? – Annjawn