• Keine Ergebnisse gefunden

TableView mit Edit/New/Del View

N/A
N/A
Protected

Academic year: 2021

Aktie "TableView mit Edit/New/Del View"

Copied!
45
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

TableView mit Edit/New/Del View

(2)

TableView mit Edit/New/Del View

(3)

TableView mit Edit/New/Del View

(4)

TableView mit Edit/New/Del View

(5)

TableView mit Edit/New/Del View: MainView

Klasse Stadt anlegen: Cmd N

(6)

TableView mit Edit/New/Del View: MainView

Name der Klasse: Stadt

SubClass: NSObject

(7)

TableView mit Edit/New/Del View: MainView

Speicher auf Festplatte

(8)

TableView mit Edit/New/Del View: MainView

Klasse Stadt im Quellcode

(9)

Vollständiger Quellcode der Klasse Stadt

class Stadt: NSObject {

var name:String=""

var bemerkung:String=""

init(Name name:String, Bemerkung bem:String){

self.name=name

self.bemerkung=bem }

}

TableView mit Edit/New/Del View: MainView

(10)

TableView mit Edit/New/Del View

Struktur

(11)

TableView mit Edit/New/Del View

Ablauf

1. ein Label-Element in den ViewController einfügen

Text: Städte

2. ein Button neben dem Label einfügen

Text: Edit

3. ein Button neben dem Label einfügen

Text: New

4. ein Button neben dem Label einfügen

Text: Delete

5. ein TableView-Element in den ViewController einfügen 6. Constraints einbauen

Ein StackView (Horizontal), Button gleiche Breite

(12)

Städte Edit New Del

TableView mit Edit/New/Del View

(13)

TableView mit Edit/New/Del View

(14)

1. ein uiLabel-Element in den neuen ViewController einfügen

Inhalt: EditViewController / NewViewController / DeleteViewController 2. ein uiLabel-Element in den neuen ViewController einfügen

Inhalt: Name

3. ein uiTextfield-Element in den neuen ViewController einfügen

Name: tName als Outlet

4. ein uiLabel-Element in den neuen ViewController einfügen

Inhalt: Bemerkung

5. ein uiTextView-Element in den neuen ViewController einfügen

Name: tBemerkung als Outlet 6. uiButton für dem Ok-Schalter

Text: Ok

7. uiButton für dem Ok-Schalter

Text: Ok

Einfügen von drei neuen ViewControllern

TableView mit Edit/New/Del View

(15)

TableView mit Edit/New/Del View

(16)

TableView mit Edit/New/Del View

(17)

1. Aufruf des Einfüge-Dialogs mit Cmd+N. 


2. Auswahl des Symbols „Cocoa Touch Class“. 


3. Classname „EditViewController“ 


4. SubClass: „UIViewController“ 


5. Im „Property Inspector“ des EditViewController die Quellcode eintragen.

TableView mit Edit/New/Del View

Einfügen einer neuen Quellcode-Datei für den ViewController

(18)

TableView mit Edit/New/Del View

1. Aufruf des Einfüge-Dialogs mit Cmd+N. 


2. Auswahl des Symbols „Cocoa Touch Class“. 


3. Classname „NewViewController“ 


4. SubClass: „UIViewController“ 


5. Im „Property Inspector“ des NewViewController die Quellcode eintragen.

Einfügen einer neuen Quellcode-Datei für den ViewController

(19)

TableView mit Edit/New/Del View

1. Aufruf des Einfüge-Dialogs mit Cmd+N. 


2. Auswahl des Symbols „Cocoa Touch Class“. 


3. Classname „NewViewController“ 


4. SubClass: „UIViewController“ 


5. Im „Property Inspector“ des NewViewController die Quellcode eintragen.

Einfügen einer neuen Quellcode-Datei für den ViewController

(20)

TableView mit Edit/New/Del View

Einfügen einer neuen Quellcode-Datei für den ViewController

(21)

TableView mit Edit/New/Del View

Einfügen einer neuen Quellcode-Datei für den ViewController

(22)

TableView mit Edit/New/Del View

1. Delegate eintragen:

UITableViewDelegate

UITableViewDataSource

2. staedte-Array deklarieren und erzeugen 3. Outlet erzeugen

tableview

Schalter edit

Schalter new

4. init-Methode setzen (staedte-Array und delegate-self) 5. Setzen der tableView-Delegate-Methoden

Eintragen der Inhalte der TableView

(23)

class ViewController: UIViewController,

UITableViewDelegate, UITableViewDataSource {

1. Delegate eintragen:

TableView mit Edit/New/Del View

2. staedte-Array deklarieren und erzeugen

var staedte = [Stadt]()

3. Outlet erzeugen

@IBOutlet var tableview: UITableView!

@IBOutlet var bnEdit: UIButton!

@IBOutlet var bnNew: UIButton!

@IBOutlet var bnDelete: UIButton!

(24)

TableView mit Edit/New/Del View

1. die drei ViewController einfügen

ViewController

neue Swiftdatei: ViewControllerEdit

ViewController

neue Swiftdatei: ViewControllerNew

ViewController

neue Swiftdatei: ViewControllerDelete

2. Verbinden der Schalter mit den Views

(25)

TableView mit Edit/New/Del View

neue Datei für einen ViewController

(26)

TableView mit Edit/New/Del View

neue Datei für einen ViewController: Name und SubClass

(27)

TableView mit Edit/New/Del View

speichern der neuen Datei

(28)

TableView mit Edit/New/Del View

Zuweisen des ViewControllers zur Datei

(29)

TableView mit Edit/New/Del View

Verknüpfen des Schalters „Edit“ zum ViewController

Anklicken des Schalters

Ctrl-Taste drücken

ziehen zum ViewController

Menüeintrag: „show“

(30)

TableView mit Edit/New/Del View

Verknüpfen des Schalters „New“ zum ViewController

Menüeintrag: „show“

(31)

TableView mit Edit/New/Del View

Verknüpfen des Schalters „Delete“ zum ViewController

Menüeintrag: „show“

(32)

TableView mit Edit/New/Del View

override func viewDidLoad() { super.viewDidLoad()

staedte.append( Stadt(Name: "New York", Bemerkung: "Manhattan") )

staedte.append( Stadt(Name: "Mailand", Bemerkung: "Mailander Scala") ) staedte.append( Stadt(Name: "Rom", Bemerkung: "Vatikan,

Michelangelo") )

staedte.append( Stadt(Name: "Moskau", Bemerkung: "Roter Platz") ) staedte.append( Stadt(Name: "Wernigerode", Bemerkung: "HS Harz") ) staedte.append( Stadt(Name: "New York", Bemerkung: "Manhattan") )

}

(33)

func numberOfSections(in tableView: UITableView) -> Int { return 1

}

func tableView(_ tableView: UITableView,

numberOfRowsInSection section: Int) -> Int { return staedte.count

}

TableView mit Edit/New/Del View

(34)

func tableView(_ tableView: UITableView,

cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell:UITableViewCell=UITableViewCell(

style: UITableViewCellStyle.subtitle, reuseIdentifier: "mycell")

cell.textLabel!.text = "xx"

let stadt:Stadt = staedte[(indexPath as NSIndexPath).row]

cell.textLabel!.text = stadt.name

cell.detailTextLabel!.text=stadt.bemerkung return cell

}

TableView mit Edit/New/Del View

(35)

TableView mit Edit/New/Del View

nächste Schritte:

Aufruf des EditControllers

Eintragen der Werte

Abfangen der Änderungen

(36)

TableView mit Edit/New/Del View

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if let button:UIButton = sender as? UIButton {

// Abfrage, welcher Schalter: Übergabe der Stadt if button==bnEdit {

if let indexPath = tableview.indexPathForSelectedRow {

let stadt:Stadt = staedte[(indexPath as NSIndexPath).row]

if let dest = segue.destination as? EditViewController { dest.stadt=stadt

} }

}

} // if bbedit } // prepare

ViewController:

prepare-Methode wird immer aufgerufen, wenn man auf einen

Schalter klickt.

(37)

if button==bnDelete {

if let indexPath = tableview.indexPathForSelectedRow {

let stadt:Stadt = staedte[(indexPath as NSIndexPath).row]

if let dest = segue.destination as? DeleteViewController { dest.stadt=stadt

} }

TableView mit Edit/New/Del View

ViewController:

prepare-Methode wird immer aufgerufen, wenn man auf einen

Schalter klickt.

(38)

TableView mit Edit/New/Del View

EditViewController

Variablen:

var stadt : Stadt?=nil

var first:Bool=true

Outlets:

@IBOutlet var tName: UITextField!

@IBOutlet var tBemerkung: UITextView!

(39)

TableView mit Edit/New/Del View

EditViewController

override func viewDidLoad() { super.viewDidLoad()

if stadt != nil {

tName.text = stadt!.name

tBemerkung.text = stadt!.bemerkung }

tBemerkung.delegate=self

}

(40)

TableView mit Edit/New/Del View

EditViewController: Änderungen speichern

@IBAction func tNameEditingChanged(_ sender: AnyObject) { if stadt != nil {

stadt!.name=tName.text!

} }

// Delegate !!!

func textViewDidChange(_ textView: UITextView) { if stadt != nil {

stadt!.bemerkung=tBemerkung.text!

}

}

(41)

TableView mit Edit/New/Del View

EditViewController: Rücksprünge !

Man benötigt im HauptViewController jeweils eine Methode:

// Rücksprung vom EditViewController Ok @IBAction func unwindToEditViewOk(_

segue:UIStoryboardSegue) {

}

// Rücksprung vom ???ViewController Abbruch @IBAction func unwindToViewCancel(_

segue:UIStoryboardSegue) { }

(42)

Verknüpfen der Schalter mit den unWind-Methoden Schalter anklicken, Ctrl-Taste drücken

ziehen zum Schalter exit

TableView mit Edit/New/Del View

(43)

@IBAction func unwindToEditView(_

segue:UIStoryboardSegue) {

if let src = segue.source as? EditViewController {

if let indexPath = tableview.indexPathForSelectedRow { let stadt:Stadt = staedte[(indexPath as

NSIndexPath).row]

stadt.name = (src.stadt?.name)!

stadt.bemerkung = (src.stadt?.bemerkung)!

// update

tableview.delegate=nil

tableview.dataSource=nil tableview.delegate=self

tableview.dataSource=self } // if

} // if }

TableView mit Edit/New/Del View

(44)

TableView mit Edit/New/Del View

@IBAction func unwindToNewViewOk(_ segue:UIStoryboardSegue) { if let src = segue.source as? NewViewController {

let stadt:Stadt = Stadt(Name: "", Bemerkung: "") stadt.name = src.stadt.name

stadt.bemerkung = (src.stadt.bemerkung) labelStadt.text=(src.stadt.name)

staedte.append(stadt)

// update

tableview.delegate=nil

tableview.dataSource=nil tableview.delegate=self

tableview.dataSource=self }

}

(45)

TableView mit Edit/New/Del View

@IBAction func unwindToDeleteViewOk(_ segue:UIStoryboardSegue) { if let indexPath = tableview.indexPathForSelectedRow {

let row = (indexPath as NSIndexPath).row labelStadt.text = String(row)

staedte.remove(at: row) // update

tableview.delegate=nil

tableview.dataSource=nil tableview.delegate=self

tableview.dataSource=self }

} // unwindToDeleteViewOk

Referenzen

ÄHNLICHE DOKUMENTE

If you type a file name, EDIT will write the contents of the buffer (or the addressed part) into secondary storage and display your file name along with the

Dynamic Programming Algorithm Edit Distance Variants..

The forest distance between two ordered forests is the minimum cost sequence of node edit operations (node deletion, node insertion, node rename) that transforms one forest into

Search Space Reduction for the Tree Edit Distance Lower Bound: Traversal Strings.

1 Search Space Reduction for the Tree Edit Distance Similarity Join and Search Space Reduction Lower Bound: Traversal Strings.. Upper Bound: Constrained

Edit distance between two strings: the minimum number of edit operations that transforms one string into the another. Dynamic programming algorithm with O (mn) time and O (m)

Dynamic Programming Algorithm Edit Distance Variants.. Augsten (Univ. Salzburg) Similarity Search WS 2019/20 2

Einfluß von Testosteron auf Herzgewicht und Myokardstruktur sowie Modifikation des Effekts durch Enalapril Behandlung.. Geboren am 02.05.1971 in Budapest Reifeprüfung am 09.06.1989