ビューの上部に7つのセルがあり、7つのセルしかない場合は正直言ってUICollectionView
を使用しません。 UICollectionView
あなたがスクロールする必要があるたくさんのデータ/画像を持っていると本当に輝きます。代わりに、私はそれらの '細胞'を正常にUIView
s(7)水平StackViewの内部に配置します。
次に、UITableViewの下部に必要なタスクを記入するために使用されるDatSourceを更新および変更する、タップされたジェスチャーに対するこれらのUIViewのターゲットアクションを与えることができます。
日付を更新する限り、Date()
を呼び出すと、デバイスの現在のdateTimeスタンプが与えられます。そのDate
オブジェクトの `.addingTimeInterval() 'を使って、24,48、etc ...時間を翌日に追加することができます。
EDIT:
確か例えば、あなたが、アレイ内のタスクを持ってしようとしている、あなたは毎日のタスクの配列、または配列の配列を保持するための辞書を作成することができます言及:var taskDictionary : [String : [Task]]?
私は、たとえばここにtag
プロパティを使用しますが、
func dayOfWeekTapped(_ sender: UIView) {
myTableViewDataSource = taskDictionary[sender.tag]
//myTableViewDataSource = taskArray[sender.tag]
myTableView.reloadData()
}
:辞書/配列からコンテンツを引っ張って制御する機能にtapGestureのセレクタを設定するか、var taskArray : [[Task]]?
あなたはビュー内のUIElementにアクセスできるように、UIViewのサブクラスを作成する方が良いでしょう:
func dayOfWeekTapped(_ sender: CustomUIView) {
myTableViewDataSource = taskDictionary[sender.dateLbl.text]
//myTableViewDataSource = taskArray[(sender.dateLabel.text as! NSString).intValue]
myTableView.reloadData()
}
私はこの質問を考えると好奇心旺盛だが、カスタムUIViewのは非常に迅速に(このようなものを見ることができるましたそれは少しをクリーンアップすることができるよう)一緒に投げ:
protocol DayViewTappedDelegate {
func daySelected(_ selectedLabelText: String)
}
class DayView: UIView {
@IBOutlet var dateLbl: UILabel!
var tapGesture: UITapGestureRecognizer?
var delegate: DayViewTappedDelegate?
func setDelegateAndTap(_ delegate: DayViewTappedDelegate) {
self.delegate = delegate
self.tapGesture = UITapGestureRecognizer(target: self, action: #selector(self.dayViewTapped))
tapGesture?.numberOfTapsRequired = 1
self.addGestureRecognizer(tapGesture!)
}
@objc
func dayViewTapped() {
delegate!.daySelected(self.dateLbl.text!)
}
}
VC:
class ViewController: UIViewController, DayViewTappedDelegate {
@IBOutlet var dayBtns : [DayView]!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
for i in 0 ..< dayBtns.count {
let date = Date().addingTimeInterval(TimeInterval(86400 * i))
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "dd"
dayBtns[i].dateLbl.text = dateFormatter.string(from: date)
dayBtns[i].dateLbl.textAlignment = .center
dayBtns[i].setDelegateAndTap(self)
}
}
func daySelected(_ selectedLabelText: String) {
print(selectedLabelText)
}
}
あなたは暗黙的に開封されたoptionalsを取り除くと、そのpropertを作る取得します構造体モデルの設計を開始することができますies定数 –