• Keine Ergebnisse gefunden

TableView mit einer Anzeige von Bildern

N/A
N/A
Protected

Academic year: 2021

Aktie "TableView mit einer Anzeige von Bildern"

Copied!
35
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

TableView mit einer Anzeige von Bildern

(2)

TableView mit einer Anzeige von Bildern

es gibt diverse Directories mit einem Punkt am Anfang

(3)

TableView mit einer Anzeige von Bildern: Klasse DirItem

(4)

Klasse DirItem anlegen: Cmd N

TableView mit einer Anzeige von Bildern

(5)

Name der Klasse: DirItem

SubClass: NSObject

TableView mit einer Anzeige von Bildern

(6)

Speichern auf Festplatte

TableView mit einer Anzeige von Bildern

(7)

Vollständiger Quellcode der Klasse DirItem class DirItem: NSObject {

var dirname:String=""

var path:String=""

init(_ dirname:String, _ path:String){

self.dirname=dirname self.path=path

}

}

TableView mit einer Anzeige von Bildern

(8)

Struktur

TableView mit einer Anzeige von Bildern

(9)

Ablauf

1. StackView

1. Ein Button einfügen

Text: cd..

2. Ein Button einfügen

Text: cd item

3. Ein Button einfügen

Text: show pictures

2. ein TableView-Element in den ViewController einfügen 3. Constraints einbauen

Ein StackView (Horizontal), Button gleiche Breite

TableView mit einer Anzeige von Bildern

(10)

cd.. cd Item show pictures

TableView mit einer Anzeige von Bildern

(11)

class ViewController: UIViewController,

UITableViewDelegate, UITableViewDataSource { 1. Delegate eintragen:

2. Variablen deklarieren und erzeugen var directories = [DireItem]() var actualPath:String=""

let fileManager : FileManager = FileManager() var homedir = ""

3. Outlet erzeugen

@IBOutlet var tableview: UITableView!

@IBOutlet var bnCdItem: UIButton!

@IBOutlet var bnCdParent: UIButton!

@IBOutlet var bnShowPictures: UIButton!

TableView mit einer Anzeige von Bildern

(12)

TableView mit einer Anzeige von Bildern

Methoden

1. TableView-Delegate-Methoden 2. getDirItems

3. bnCdParentClick 4. bnCdItemClick 5. getHomeDir

6. getParent

7. prepare (for jump)

(13)

TableView mit einer Anzeige von Bildern

TableView-Delegate-Methoden

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

}

// Anzahl der Reihen

func tableView(_ tableView: UITableView,

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

}

(14)

TableView mit einer Anzeige von Bildern

TableView-Delegate-Methoden

func tableView(_ tableView: UITableView,

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

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

let dir:DirItem = directories[(indexPath as NSIndexPath).row]

cell.textLabel!.text = dir.dirname cell.detailTextLabel!.text=dir.path

return cell }

(15)

// wird aufgerufen, wenn eine Zelle angeklickt wird

func tableView(_: UITableView, didSelectRowAt: IndexPath) { bnCdItem.isEnabled=true

// let row = (didSelectRowAt as NSIndexPath).row // labelDirItem.text="row: "+String(row)

}

TableView mit einer Anzeige von Bildern

TableView-Delegate-Methoden

(16)

TableView mit einer Anzeige von Bildern

func getDirItems(_ path:String) { actualPath=path

directories.removeAll() do {

let filesInDirectory = try

fileManager.contentsOfDirectory(atPath: path) as? [String]

if let files = filesInDirectory { if files.count > 0 {

for item in files {

if !item.hasPrefix(".") {

directories.append( DirItem(item, path) ) }

} // for

} // if

} // if let files = filesInDirectory { } catch let error { }

tableview.reloadData()

bnCdItem.isEnabled=false

}

(17)

TableView mit einer Anzeige von Bildern

Aufruf in didLoad

override func viewDidLoad() { super.viewDidLoad()

// NSHomeDirectory ist fehlerhaft homedir = NSHomeDirectory()

// Abschneiden nach dem Username homedir = getHomeDir(homedir)

getDirItems(homedir) // Liste erstellen tableview.delegate=self

tableview.dataSource=self

}

(18)

TableView mit einer Anzeige von Bildern

getHomeDir: /Users/user1/libary -> /Users/user1

func getHomeDir(_ path:String) -> String { var newPath=""

var anz=0

for ch in path.characters { if ch == "/" {

anz += 1

if anz == 3 { break

} }

newPath.append(ch) }

return newPath

}

(19)

TableView mit einer Anzeige von Bildern

cd Item Click

@IBAction func bnCdItemClick(_ sender: UIButton) { // test, Zeile aktiviert?

if let indexPath = tableview.indexPathForSelectedRow {

let dir:DirItem = directories[(indexPath as NSIndexPath).row]

getDirItems(dir.path+"/"+dir.dirname) }

} // bnCdItemClick

(20)

@IBAction func bnCdParentClick(_ sender: UIButton) { let path = getParent(actualPath)

getDirItems( path ) }

TableView mit einer Anzeige von Bildern

cd Parent Click: cd ..

(21)

func getParent(_ path:String) -> String {

// bestimme Anzahl der /, am Schluss ist kein / var anzComplete=0

for ch in path.characters { if ch == "/" {

anzComplete += 1 }

}

var newPath=""

var anz = 0

for ch in path.characters { if ch == "/" {

anz += 1

if anz == anzComplete { break

} }

newPath.append(ch) }

return newPath } //getParent

TableView mit einer Anzeige von Bildern

(22)

TableView mit einer Anzeige von Bildern

(23)

1. Ein neuen ViewController in Mainboard einfügen

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

Inhalt: Verzeichnis

3. uiButton für den previous-Schalter

Text: < - -

4. uiButton für den next-Schalter

Text: - - >

5. uiButton für den Exit-Schalter

Text: -Exit

6. ein uiImageView-Element in den neuen ViewController einfügen

Name: imageview als Outlet

Einfügen eines neuen ViewControllers

TableView mit einer Anzeige von Bildern

(24)

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


2. Auswahl des Symbols „Cocoa Touch Class“. 


3. Classname „ShowPicturesViewController“ 


4. SubClass: „UIViewController“ 


5. Im „Property Inspector“ des ShowPicturesViewController die Quellcode-Datei eintragen.

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

TableView mit einer Anzeige von Bildern

(25)

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

TableView mit einer Anzeige von Bildern

(26)

var fileItems = [String]() var index=0

var pictPath:String = ""

Variablen im Pictures-ViewControllers

TableView mit einer Anzeige von Bildern

Variablen im Pictures-ViewControllers

@IBOutlet var labelCaption: UILabel!

@IBOutlet var imageview: UIImageView!

(27)

override func viewDidLoad() { super.viewDidLoad()

labelCaption.text = pictPath getFileItems(pictPath)

}

TableView mit einer Anzeige von Bildern

Methode viewDidLoad:

(28)

func getFileItems(_ path:String) { do {

let fileManager : FileManager = FileManager()

let filesInDirectory = try fileManager.contentsOfDirectory(

atPath: path) as? [String]

if let files = filesInDirectory { if files.count > 0 {

for item in files {

if !item.hasPrefix(".") {

fileItems.append( path+"/"+item ) }

} // for

showImage() }

} // if let files = filesInDirectory { } catch let error { }

}

TableView mit einer Anzeige von Bildern

(29)

func showImage() {

self.imageview.image = UIImage(named: fileItems[index]) }

TableView mit einer Anzeige von Bildern

(30)

TableView mit einer Anzeige von Bildern Events:

@IBAction func bnPrevClick(_ sender: UIButton) { if index > 0 {

index -= 1

showImage() }

}

@IBAction func bnNextClick(_ sender: UIButton) { if index < (fileItems.count-1) {

index += 1 showImage() }

}

(31)

Verknüpfen des Schalters „show pictures“ zum ViewController

Anklicken des Schalters

Ctrl-Taste drücken

ziehen zum ViewController

Menüeintrag: „show“

TableView mit einer Anzeige von Bildern

(32)

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

if button==bnShowPictures {

if let dest = segue.destination as? ShowPicturesViewController { dest.pictPath = actualPath

} }

} // if button } // prepare

HauptController: ViewController

prepare-Methode wird immer aufgerufen, wenn man auf einen Schalter klickt.

TableView mit einer Anzeige von Bildern

(33)

ShowPicturesEditViewController: Rücksprung !

Man benötigt im HauptViewController eine Methode:

// Rücksprung vom ShowPictureViewController Abbruch @IBAction func unwindToMainViewController(

_ segue:UIStoryboardSegue) { // keine Aktion

} // unwindToEditViewCancel

TableView mit einer Anzeige von Bildern

(34)

Verknüpfen der Schalter mit den unWind-Methoden

TableView mit einer Anzeige von Bildern

(35)

TableView mit einer Anzeige von Bildern

Erweiterungen

1. Main-ViewController

Tipp-Touch

2. Picture-ViewController

Einbau eines Wischgeste

links = previous

rechts = next

Referenzen

ÄHNLICHE DOKUMENTE

[r]

Im Jahr 1985 – Gene Myers war in- zwischen Assistant Professor an der University of Arizona – entwickelte er ein Programm zum Vergleich von Text- dateien, als ein Kollege auf die

Insgesamt betrachtet zeigt sich aber auch bei einer weiteren Problemgruppe des Arbeitsmarktes eine für die Stadt Bottrop günstigere Entwicklung als in den Vergleichsregionen

Darüber findet im Rahmen des Projekts die Definition von Martin und Sunley (2015) Anwendung: Regionale öko- nomische Resilienz ist die „Fähigkeit einer regionalen oder

'(M)' vor der Paketnummer heiBt, daB dies Objekt nur im Multi - User vorhanden ist. Die Paketnummer ergibt sich aus der Reihenfolge, in der die Pakete im Multi

Wo andererseits Analysewerkzeuge gesucht werden, um dem machtvollen Sog der Bilder und der Wirkun- gen, die zwischen Bildern im Plural entstehen, begriff- lich habhaft zu werden,

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -&gt; Int { return

7 (Go 2016: 63) Mit anderen Worten: dass diese Prozesse derzeit zur Disposition stehen, bedeutet eben nicht, dass sie für den Mainstream der Soziologie nicht doch zum