2012-03-26 28 views
2

Ich versuche, ein Detailbild aus einer UITableView Liste aufrufen - aber die Delegierten nicht in der Aufnahmeansicht wird genannt - ich den ganzen Code schreiben werde:UITableViewDelegate nicht aufgerufen wird

Liste Header-Datei:

#import <UIKit/UIKit.h> 
#import "tank.h" 

@class iTanksV2ListViewController; 
@protocol iTanksV2ListViewControllerDelegate 
    - (void) iTanksListViewController:(iTanksV2ListViewController *) sender choseTank:(tank *)tank; 
@end 

@interface iTanksV2ListViewController : UITableViewController 
@property (nonatomic, strong) NSArray *tanks; 
@property (weak, nonatomic) IBOutlet UITableView *tankTableView; 
@property (weak, nonatomic) id <iTanksV2ListViewControllerDelegate> delegate; 
@end 

und die m-Datei:

#import "iTanksV2ListViewController.h" 
#import "tank.h" 
#import "tankDetailViewController.h" 

@interface iTanksV2ListViewController() 

@end 

@implementation iTanksV2ListViewController 
@synthesize tanks = _tanks; 
@synthesize tankTableView = _tankTableView; 
@synthesize delegate = _delegate; 


- (id)initWithStyle:(UITableViewStyle)style 
{ 
    self = [super initWithStyle:style]; 
    if (self) { 
     // Custom initialization 
    } 
    return self; 
} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    // Uncomment the following line to preserve selection between presentations. 
    // self.clearsSelectionOnViewWillAppear = NO; 

    // Uncomment the following line to display an Edit button in the navigation bar for this view controller. 
    // self.navigationItem.rightBarButtonItem = self.editButtonItem; 
} 

- (void)viewDidUnload 
{ 
    [self setTankTableView:nil]; 
    [super viewDidUnload]; 
    // Release any retained subviews of the main view. 
    // e.g. self.myOutlet = nil; 
} 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    return (interfaceOrientation == UIInterfaceOrientationPortrait); 
} 

#pragma mark - Table view data source 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    // Return the number of sections. 
    return 1;//keep this section in case we do need to add sections in the future. 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    // Return the number of rows in the section. 
    return [self.tanks count]; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"Tank List Table Cell"; 
    UITableViewCell *cell = [self.tankTableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (!cell) 
    { 
     cell = [[UITableViewCell alloc] initWithFrame:CGRectZero]; 
    } 
    tank *thisTank = [self.tanks objectAtIndex:indexPath.row]; 
    cell.textLabel.text = thisTank.tankNumber; 
    return cell; 
} 

-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if([segue.identifier isEqualToString:@"Show Tank Details"]) 
    { 

    } 
} 

#pragma mark - Table view delegate 

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    tank *thisTank = [self.tanks objectAtIndex:indexPath.row]; 
    [self.delegate iTanksListViewController:self choseTank:thisTank]; 

} 

@end 

und der Header für die Empfangsdatei:

#import <UIKit/UIKit.h> 
#import "tankGauge.h" 
#import "tank.h" 

@interface tankDetailViewController : UIViewController 
@property (weak, nonatomic) IBOutlet UILabel *tankNumberLabel; 
@property (weak, nonatomic) IBOutlet UILabel *tankProductLabel; 
@property (weak, nonatomic) IBOutlet UILabel *tankAvailableProductLabel; 
@property (weak, nonatomic) IBOutlet UILabel *tankMaxVolumeLabel; 
@property (weak, nonatomic) IBOutlet tankGauge *tankVolumeGauge; 
@property (weak, nonatomic) tank* tankToShow; 
@end 

... und die m-Datei:

#import "tankDetailViewController.h" 
#import "iTanksV2ListViewController.h" 

@interface tankDetailViewController() <iTanksV2ListViewControllerDelegate> 

@end 

@implementation tankDetailViewController 
@synthesize tankNumberLabel = _tankNumberLabel; 
@synthesize tankProductLabel = _tankProductLabel; 
@synthesize tankAvailableProductLabel = _tankAvailableProductLabel; 
@synthesize tankMaxVolumeLabel = _tankMaxVolumeLabel; 
@synthesize tankVolumeGauge = _tankVolumeGauge; 
@synthesize tankToShow = _tankToShow; 


- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     // Custom initialization 
    } 
    return self; 
} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
} 

-(void)iTanksListViewController:(iTanksV2ListViewController *)sender choseTank:(id)tank 
{ 
    self.tankToShow = tank; 
    self.tankNumberLabel.text = self.tankToShow.tankNumber; 
} 

- (void)viewDidUnload 
{ 
    [self setTankNumberLabel:nil]; 
    [self setTankProductLabel:nil]; 
    [self setTankAvailableProductLabel:nil]; 
    [self setTankMaxVolumeLabel:nil]; 
    [self setTankVolumeGauge:nil]; 
    [super viewDidUnload]; 
    // Release any retained subviews of the main view. 
} 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    return (interfaceOrientation == UIInterfaceOrientationPortrait); 
} 

@end 

Antwort

3

tankTableView ist ein IBOutlet, so brauchen Sie nur auf Ihre File's Owner in Ihrem xib Ihre Tableview Delegierter und Datenquelle zu verbinden, wie unten dargestellt: enter image description here

+0

Ich habe gerade überprüft, und ich denke, das ist getan - der Delegat und die Datenquelle sind beide auf itanksv2listviewcontroller gesetzt: -S ist das richtig? – HillInHarwich

+0

Absolut! Setzen Sie sie programmgesteuert oder über 'xib'? – tipycalFlow

+0

Sie werden durch das Storyboard gesetzt, denke ich! Ich bin neu und es scheint im Moment v kompliziert! : -S – HillInHarwich

0

Sie, dass als Delegierter gesetzt haben für diesen Tableview Viewcontroller?

+0

Ich denke so! In der Implementierung des View-Controllers - das letzte Stück Code in der Ansicht ... – HillInHarwich