• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Die Bildungsoffensive hier im Forum geht weiter! Jetzt sollen Kreativität und technische Möglichkeiten einen neue Dimension erreichen. Das Thema in diesem Monat lautet - Verkehrte Welt - Hier geht es lang --> Klick

EIGENTLICH ganz einfaches TableView

gaol

James Grieve
Registriert
20.06.12
Beiträge
132
Ich möchte so etwas wie auf diesem Bild für eine App erstellen:
bildschirmfoto2013-07klj43.png
Das Problem ist, dass man das von oben ganz einfach im IB für ein TableViewController erstellen kann, bei einem UITableView funktioniert das aber nicht (Fehler: file://localhost/Users/BLA/BLA/BLA/BLA/BLA/MainStoryboard_iPad.storyboard: error: Illegal Configuration: Static table views are only valid when embedded in UITableViewController instances)
Weiss jemand wie ich das (möglichst einfach) realisieren kann?
 
Wieso möchtest du denn einen TableView ohne TableViewController?
Der Controller ist für sämtliche Funktionen und "Listener" des TableViews zuständig.
 
Korrigiere mich, wenn ich falsch liege ich bin noch relativ neu:
Neben dem TableView soll eben auch noch anderer Text/Bilder stehen und ein Controller benutzt ja (imo) das ganze Fenster.
Oder kann ich da mit einem View Container o.ä. nachhelfen?
 
Die grundsätzliche Überlegung bzgl. der Controller ist korrekt, allerdings würde ich dir empfehlen, dem View des übergeordneten VCs die ".tableView" des TableViewControllers zu übergeben, bzw. anzuzeigen.

Ich bin leider derzeit nur mit dem Handy unterwegs, aber zu "embedded UITableViews" solltest du bei Stackoverflow Beispiele bzw. Hilfestellungen finden.
 
Hi,
der zu grundlegende Kontroller muss nicht unbedingt ein TVC sein. Es müssen 'lediglich' die Delegates für einen TCV eingebunden werden.

Sprich, die View, was den TableView beinhaltet muss entweder ein TVC (dann ist es automatisch so) oder eben die entsprechenden Delegates / Protokolle implementieren.

Mit SubViews kannst du das ganze auch trennen. Sprich dann bindest du eine TVC Instance in einen normalen VC ein. :)

LG, Tobi
 
Vielen Dank für eure Hilfestellungen, allerdings habe ich ein weiteres Problem (:-()
Ich habe einen Picker (UIPickerView - Ja schon wieder ein View...). Kann ich da im Interface Builder gleich die Auswahlmöglichkeiten wählen? Denn in der Dokumentation habe ich kein "Addrow" o.ä. gefunden. Am liebsten hätte ich eine Möglichkeit ein Array mit Strings als Auswahlmöglichkeiten oder eben eine Lösung im IB.

PS: Am liebsten ohne, dass ich dem Pickerview eine Klasse geben muss
EDIT: PROBLEM GELÖST
 
Zuletzt bearbeitet:
Hi,
bei Problemloesungen bitte auch posten was es geloest hat. :) Btw. Themen bitte nur Einzelthematisch loesen - so kann man mehr Leute helfen die nach dem Problem suchen. :)

LG
 
Naja war ganz einfach, man muss das Picker-View einfach "Erben" (zwischen die Spitzen klammern).

Ich habe noch eine Frage zum TableView. Gibt es eine Möglichkeit die Daten dort zu bearbeiten? Also alle Zellen welche drin sind löschen und neue Zellen einfügen?

Bei mir sieht es momentan so aus:

Code:
- ([COLOR=#0433ff]id[/COLOR])initWithNibName:([COLOR=#3495af]NSString[/COLOR] *)nibNameOrNil bundle:([COLOR=#3495af]NSBundle[/COLOR] *)nibBundleOrNil
{
    [COLOR=#0433ff]self[/COLOR] = [[COLOR=#0433ff]super[/COLOR] [COLOR=#3495af]initWithNibName[/COLOR]:nibNameOrNil [COLOR=#3495af]bundle[/COLOR]:nibBundleOrNil];
    [COLOR=#0433ff]if[/COLOR] ([COLOR=#0433ff]self[/COLOR]) {
[COLOR=#008F00]// Custom initialization[/COLOR]
    }
[COLOR=#0433FF]returnself[COLOR=#000000];[/COLOR][/COLOR]
}


- ([COLOR=#0433ff]void[/COLOR])viewDidLoad
{
[COLOR=#3495AF][COLOR=#000000]    [[/COLOR][COLOR=#0433ff]super[/COLOR]viewDidLoad[COLOR=#000000]];[/COLOR][/COLOR]
[COLOR=#008F00]// Do any additional setup after loading the view.[/COLOR]
[COLOR=#3495AF][COLOR=#000000]    [/COLOR][COLOR=#0433ff]self[/COLOR][COLOR=#000000].[/COLOR]tableView[COLOR=#000000].[/COLOR]dataSource[COLOR=#000000] = [/COLOR][COLOR=#0433ff]self[/COLOR][COLOR=#000000];[/COLOR][/COLOR]
[COLOR=#3495AF][COLOR=#000000]    [/COLOR][COLOR=#0433ff]self[/COLOR][COLOR=#000000].[/COLOR]tableView[COLOR=#000000].[/COLOR]delegate[COLOR=#000000] = [/COLOR][COLOR=#0433ff]self[/COLOR][COLOR=#000000];[/COLOR][/COLOR]

}
- ([COLOR=#0433ff]void[/COLOR]) newRezept:([COLOR=#3495af]NSArray[/COLOR]*)objects {
// wenn das ausgeführt wird -> neu laden (Array "inhalt" wird hier bearbeitet)

}
[COLOR=#008F00]//3[/COLOR]
-([COLOR=#3495af]NSInteger[/COLOR])tableView:([COLOR=#3495af]UITableView[/COLOR] *)tableView numberOfRowsInSection:([COLOR=#3495af]NSInteger[/COLOR])section {
[COLOR=#3495AF][COLOR=#0433ff]return[/COLOR][COLOR=#000000] [[/COLOR][COLOR=#0433ff]self[/COLOR][COLOR=#000000].[/COLOR]inhaltcount[COLOR=#000000]];[/COLOR][/COLOR]
}


[COLOR=#008F00]//4[/COLOR]
-([COLOR=#3495af]UITableViewCell[/COLOR] *)tableView:([COLOR=#3495af]UITableView[/COLOR] *)tableView cellForRowAtIndexPath:([COLOR=#3495af]NSIndexPath[/COLOR] *)indexPath {
    [COLOR=#008f00]//5[/COLOR]
[COLOR=#B4261A]    [COLOR=#0433FF]static[/COLOR] [COLOR=#3495AF]NSString[/COLOR] *cellIdentifier = @"apfel";[/COLOR]
    [COLOR=#008f00]//6[/COLOR]
[COLOR=#3495AF]UITableViewCell[COLOR=#000000] *cell = [tableView [/COLOR]dequeueReusableCellWithIdentifier[COLOR=#000000]:cellIdentifier];[/COLOR][/COLOR]
    [COLOR=#3495af]NSString[/COLOR] *zelle = [[COLOR=#0433ff]self[/COLOR].[COLOR=#3495af]inhalt[/COLOR] [COLOR=#3495af]objectAtIndex[/COLOR]:indexPath.[COLOR=#3495af]row[/COLOR]];
    [COLOR=#008f00]//7[/COLOR]
    [cell.[COLOR=#3495af]textLabel[/COLOR] [COLOR=#3495af]setText[/COLOR]:zelle];
[COLOR=#3495AF][COLOR=#000000]    [cell.[/COLOR]detailTextLabelsetText[COLOR=#000000]:[/COLOR][COLOR=#b4261a]@"anzahl"[/COLOR][COLOR=#000000]];[/COLOR][/COLOR]
    [COLOR=#0433ff]return[/COLOR] cell;
}


- ([COLOR=#0433ff]void[/COLOR])didReceiveMemoryWarning
{
[COLOR=#3495AF][COLOR=#000000]    [[/COLOR][COLOR=#0433ff]super[/COLOR]didReceiveMemoryWarning[COLOR=#000000]];[/COLOR][/COLOR]
[COLOR=#008F00]// Dispose of any resources that can be recreated.[/COLOR]
}

Die Felder sollen halt dann die Text von dem Array "inhalt" haben.

EDIT: Hätte ich jetzt ein neues Thema machen sollen? Wenn ja SORRY :-!
EDIT2: SetNeedsDisplay und Reloaddata haben nichts gebracht..
 
Zuletzt bearbeitet:
Ich schreibe hier nochmal mein Problem (oben habe ich es ein bisschen blöd ausgedrückt):

Beim Root-View-Controller kann ich ohne Probleme ein TableView machen (mithilfe von DEM Tutorial). Sobald ich aber einen zweiten Viewcontroller mache und dem eine eigene Klasse (detail.m/h) zuweise, kann ich das TableView nicht bearbeiten (selbst wenn der Code EXAKT derselbe ist). Kann mir jemand helfen??
 
Ist dein zweiter VC TableView/TableViewDataSource Delegate?