2012-03-31 14 views
0

Ich bin ein kompletter Neuling für die iOS-Entwicklung, aber nicht für die Programmierung.Wie lege ich den Inhalt einer Tabellenansicht in Xcode 4.2 fest?

Ich versuche, eine einfache Anwendung zu erstellen. Ich habe Xcode 4.2 geöffnet und eine neue Masteransicht-Anwendung erstellt. Ich möchte den Inhalt der Tabellenansicht auf der Masterseite festlegen.

Ich habe meine Controller-Header-Datei wie folgt bearbeitet:

#import "MyAppMasterViewController.h" 

@implementation MyAppMasterViewController 

@synthesize tableViewArray; 

Und ich habe eine NSArray isntance hinein in viewDidLoad geladen:

#import <UIKit/UIKit.h> 

@interface MyAppMasterViewController : UITableViewController 

{ 
    NSArray *tableViewArray; 
} 

@property (nonatomic, retain) NSArray *tableViewArray; 

@end 

Ich habe die tableViewArray Variable in der Controller-Implementierung synthetisiert Methode:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
    NSArray *array = [[NSArray alloc] initWithObjects:@"Apple", @"Microsoft", @"HTC", nil]; 
    self.tableViewArray = array; 
} 

Wie kann ich jetzt dieses Array zuweisen (Registerkarte leViewArray) zur Tabellenansicht?

+0

ich empfehle die Stanford iOS Videos auf iTunes U, sie erklären, wie das funktioniert sehr gut. – Weston

+1

sehr viel wert, einige einleitende Tutorials vor dem Posten für Hilfe zu tun. Eine einfache google für "UITableView Tutorial" gibt eine Tonne von Links, die diese Frage und mehr beantworten würde. Der Top-Hit sieht vielversprechend aus http://www.codigator.com/tutorials/ios-uitableview-tutorial-for-beginners-part-1/ –

Antwort

2

Wie kann ich nun dieses Array zuweisen (tableViewArray) an der Tabellenansicht?

Sie ordnen ein Array nicht einer Tabelle zu, Sie verwenden Magie mit Delegierten. Konform zum UITableViewDataSource und UITableViewDelegate in Ihrer .h wie so:

@interface MyAppMasterViewController : UITableViewController <UITableViewDelegate,UITableViewDataSource> 

Weisen Sie Ihre Klasse als Delegierter (höchstwahrscheinlich in -viewDidLoad) für die Tabelle: dann wird Ihre Tabellenansicht Sie abfragen, für die alle wichtiges -cellForRowAtIndexPath Verfahren, in dem Sie den Titel der Zelle mit so etwas wie diesem set:

-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    static NSString *CellIdentifier = @"Cell"; 

    UITableViewCell *cell = [_documentTableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
    } 

    cell.textLabel.text = [array objectAtIndex:indexPath.row]; 
    return (cell); 

} 
1

Sie nicht. In der Tabellenansicht werden Sie nach den Zellen gefragt, die nach Bedarf in der Tabellenansicht angezeigt werden. In der Tabellenansicht wird auch gefragt, wie viele Zellen vorhanden sind und wie viele Abschnitte vorhanden sind und wie viele andere Dinge sich darüber verhalten.

Woher weiß die Tabellenansicht, von welcher Instanz diese Informationen stammen sollen? Es hat eine Eigenschaft namens Delegat. Sie legen den Delegaten in Ihrer Tabellensicht für Ihre ViewController-Instanz fest und wählen anschließend aus, ob Sie die Methoden, die Sie benötigen, vom UITableViewDatasource-Protokoll in Ihrer View-Controller-Instanz implementieren.

Lesen Sie mehr über Delegation und Eigenschaften in Objective-C

Verwandte Themen