Documente Academic
Documente Profesional
Documente Cultură
Raport
Lucrare de laborator Nr.3
La Programarea Aplicațiilor Mobile
A efectuat:
st. gr. TI-151 FR
A verificat:
lector universitar Antohi Ion
Chișinău 2018
Obiective: De realizat aplicație tip Organiser pe platforma aleasă.
Tema: Priority Tasks
Funcțional: Planificator de sarcini cu priorități
Condiții: Aplicația va conține minim 3 Activități de baza care vor fi numerotate în lucrare sub forma:
1. MainActivity (structura/componente)
- Calendar View (custom or default)
- Buttons (Add/Remove/Update)
- Căutare (caută conform cuvintelor cheie)
2. AddActivity
- Data/Time controller
- Info TextBox
- Buttons și altele (la discreție conform specificului aplicației)
3. UpdateActivity - practic e una și aceeași activitate de la Add, doar ca completată deja.
- Datele operaționale din interiorul aplicației vor fi stocate în fișier/e XML forma cărora rămâne
la discreția personală. (cuvinte cheie, XML Serialization).
Mersul lucrării
1. În fig. 1 este redat aspectul aplicației la prima accesare. În bara de navigare este titlul pentru toate
sarcinile și în colțul drept al barei este un buton de adăugarea unei sarcini noi.
Fig. 1
2. După ce apăsăm butonul de adăugare, apare o fereastră nouă cu un câmp pentru text, o bară de
priorități pentru sarcină și un buton de confirmare și unul de refuz. Vezi fig. 2
Fig. 2
4. Pentru a modifica descrierea sarcinei e nevoie doar de apasat pe sarcină și se va deschide din nou
fereastra pentru editarea sarcinei. Vezi fig. 4 când modifici și fig. 5 după modificare.
Fig. 4
Fig. 5
5. Dacă sarcina a fost împlinită, e nevoie să o bifăm că a fost executată cu succes fig. 6 iar dacă
sarcina nu a fost executată e nevoie să o ștergem fig. 7.
Fig. 6
Fig. 7
Concluzie: Efectuând această lucrare de laborator, am înțeles cum se construiește o aplicație pentru a-ți
organiza sarcinile zilnice după priorități pentru a fi mai productiv. Am înțeles cum de șters un element din
listă și cum de modificat.
Anexa
AddToDo
class AddTodoViewController: UIViewController {
// MARK: - Properties
// MARK: Outlets
// MARK: Actions
bottomConstraint.constant = keyboardHeight
UIView.animate(withDuration: 0.3) {
self.view.layoutIfNeeded()
}
do {
try managedContext.save()
dismissAndResign()
} catch {
print("Error saving todo: \(error)")
}
}
}
doneButton.isHidden = false
UIView.animate(withDuration: 0.3) {
self.view.layoutIfNeeded()
}
}
}
}
TodoTable
class TodoTableViewController: UITableViewController {
// MARK: - Properties
// Init
request.sortDescriptors = [sortDescriptors]
resultsController = NSFetchedResultsController(
fetchRequest: request,
managedObjectContext: coreDataStack.managedContext,
sectionNameKeyPath: nil,
cacheName: nil
)
resultsController.delegate = self
// Fetch
do {
try resultsController.performFetch()
} catch {
print("Perform fetch error: \(error)")
}
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return resultsController.sections?[section].numberOfObjects ?? 0
}
return cell
}
// MARK: - Navigation