diff --git a/iOS/Add/Add.storyboard b/iOS/Add/Add.storyboard index 95c8fb579..a758f7b38 100644 --- a/iOS/Add/Add.storyboard +++ b/iOS/Add/Add.storyboard @@ -14,7 +14,7 @@ - + @@ -100,15 +100,15 @@ - - + + - + - + @@ -242,7 +242,7 @@ - + @@ -305,15 +305,15 @@ - - + + - + - + diff --git a/iOS/Add/AddFeedViewController.swift b/iOS/Add/AddFeedViewController.swift index d09dc98d7..fe3efe26f 100644 --- a/iOS/Add/AddFeedViewController.swift +++ b/iOS/Add/AddFeedViewController.swift @@ -14,12 +14,15 @@ import RSParser class AddFeedViewController: UITableViewController, AddContainerViewControllerChild { - @IBOutlet weak var urlTextField: UITextField! - @IBOutlet weak var nameTextField: UITextField! - @IBOutlet weak var folderPickerView: UIPickerView! - @IBOutlet weak var folderLabel: UILabel! + @IBOutlet private weak var urlTextField: UITextField! + @IBOutlet private weak var nameTextField: UITextField! + @IBOutlet private weak var folderPickerView: UIPickerView! + @IBOutlet private weak var folderLabel: UILabel! - private var pickerData: AddFeedFolderPickerData! + private lazy var pickerData: AddFeedFolderPickerData = AddFeedFolderPickerData() + private var shouldDisplayPicker: Bool { + return pickerData.containerNames.count > 1 + } private var userCancelled = false @@ -42,13 +45,16 @@ class AddFeedViewController: UITableViewController, AddContainerViewControllerCh nameTextField.text = initialFeedName nameTextField.delegate = self + folderLabel.text = pickerData.containerNames.first + + if shouldDisplayPicker { + folderPickerView.dataSource = self + folderPickerView.delegate = self + folderPickerView.showsSelectionIndicator = true + } else { + folderPickerView.isHidden = true + } - pickerData = AddFeedFolderPickerData() - folderPickerView.dataSource = self - folderPickerView.delegate = self - folderPickerView.showsSelectionIndicator = true - folderLabel.text = pickerData.containerNames[0] - // I couldn't figure out the gap at the top of the UITableView, so I took a hammer to it. tableView.contentInset = UIEdgeInsets(top: -28, left: 0, bottom: 0, right: 0) @@ -119,6 +125,15 @@ class AddFeedViewController: UITableViewController, AddContainerViewControllerCh delegate?.readyToAdd(state: urlTextField.text?.rs_stringMayBeURL() ?? false) } + override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + if section == 1 { + return shouldDisplayPicker ? 2 : 1 + } + + return super.tableView(tableView, numberOfRowsInSection: section) + } + + } extension AddFeedViewController: UIPickerViewDataSource, UIPickerViewDelegate { diff --git a/iOS/Add/AddFolderViewController.swift b/iOS/Add/AddFolderViewController.swift index 7bca799e3..3f2d9e6f1 100644 --- a/iOS/Add/AddFolderViewController.swift +++ b/iOS/Add/AddFolderViewController.swift @@ -12,9 +12,13 @@ import RSCore class AddFolderViewController: UITableViewController, AddContainerViewControllerChild { - @IBOutlet weak var nameTextField: UITextField! - @IBOutlet weak var accountLabel: UILabel! - @IBOutlet weak var accountPickerView: UIPickerView! + @IBOutlet private weak var nameTextField: UITextField! + @IBOutlet private weak var accountLabel: UILabel! + @IBOutlet private weak var accountPickerView: UIPickerView! + + private var shouldDisplayPicker: Bool { + return accounts.count > 1 + } private var accounts: [Account]! @@ -25,10 +29,16 @@ class AddFolderViewController: UITableViewController, AddContainerViewController super.viewDidLoad() accounts = AccountManager.shared.sortedActiveAccounts + + nameTextField.delegate = self accountLabel.text = (accounts[0] as DisplayNameProvider).nameForDisplay - accountPickerView.dataSource = self - accountPickerView.delegate = self + if shouldDisplayPicker { + accountPickerView.dataSource = self + accountPickerView.delegate = self + } else { + accountPickerView.isHidden = true + } // I couldn't figure out the gap at the top of the UITableView, so I took a hammer to it. tableView.contentInset = UIEdgeInsets(top: -28, left: 0, bottom: 0, right: 0) @@ -53,6 +63,13 @@ class AddFolderViewController: UITableViewController, AddContainerViewController delegate?.readyToAdd(state: !(nameTextField.text?.isEmpty ?? false)) } + override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + if section == 1 && !shouldDisplayPicker { + return 1 + } + + return super.tableView(tableView, numberOfRowsInSection: section) + } } extension AddFolderViewController: UIPickerViewDataSource, UIPickerViewDelegate { @@ -74,3 +91,12 @@ extension AddFolderViewController: UIPickerViewDataSource, UIPickerViewDelegate } } + +extension AddFolderViewController: UITextFieldDelegate { + + func textFieldShouldReturn(_ textField: UITextField) -> Bool { + textField.resignFirstResponder() + return true + } + +}