2016-02-08 5 views
0

J'ai UITableViewController dans mon storyboard dans lequel il y a trois cellules avec sur l'étiquette au milieu sur chacun. Par exemple, si un utilisateur clique sur la première étiquette de la cellule en afficher une autre tableview avec la liste des éléments en sélectionnant un élément, il revient au précédent tableView et le nom de l'élément doit être imprimé à la place de l'étiquette.Initialiser UITalbleViewController dans le code

#import <UIKit/UIKit.h> 
@interface carSelectCellTableViewCell : UITableViewCell 

@property (weak, nonatomic) IBOutlet UILabel *carMake; 
@property (weak, nonatomic) IBOutlet UILabel *carModel; 
@property (weak, nonatomic) IBOutlet UILabel *carRego; 
@property (weak, nonatomic) IBOutlet UILabel *carYear; 

//the below label are the labels in the cells. 
@property (weak, nonatomic) IBOutlet UILabel *carSelected; 
@property (weak, nonatomic) IBOutlet UILabel *location; 
@property (weak, nonatomic) IBOutlet UILabel *service; 
@end 

#import "BookService.h" 
#import <Parse/Parse.h> 
#import "carSelectCellTableViewCell.h" 
@interface BookService() 
@end 

@implementation BookService 

@synthesize tableView; 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view. 
    self.tableView.delegate = self; 
    self.tableView.dataSource = self; 

-(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSLog(@"cell tabbed"); 
    PFObject *temp = [customerCars objectAtIndex:indexPath.row]; 
    NSLog(@"%@", temp.objectId); 
    NSString *car = temp.objectId; 
     UIStoryboard *dashboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; 
    UIViewController *change = [dashboard instantiateViewControllerWithIdentifier:@"bookAservice"]; 
    [self presentViewController:change animated:YES completion:nil]; 
    static NSString *Identifier = @"carSelectedCell"; 
    //here is where i'm calling the cell to change the label value when the selection is made. before dequeueReusableCellWithIdentifier there should be appropriate tableView Table. 
    carSelectCellTableViewCell *cell2 = [dequeueReusableCellWithIdentifier:Identifier]; 
    cell2.carSelected.text = @"selcted"; 

} 

Comment est-ce que je peux initier le tableauView par programmation. Alors que je peux changer la valeur de l'étiquette de la cellule à l'élément sélectionné.

Répondre

1

maintenant Si u Supposons la table est d'abord Voir les noms que ParentViewController et la deuxième vue de table u ChildView peut faire le Foll:

Pour ce faire, faire ParentController un délégué de ChildController. Cela permet à ChildController d'envoyer un message à ParentController, ce qui nous permet de renvoyer des données. Pour que ParentController soit un délégué de ChildController, il doit être conforme au protocole de ChildController que nous devons spécifier. Cela indique à ParentController les méthodes qu'il doit implémenter.

Dans ChildController.h, sous le #import, mais au-dessus de @interface, vous spécifiez le protocole.

@class ChildController; 

@protocol ViewControllerBDelegate <NSObject> 
- (void)addItemViewController:(ChildController *)controller didFinishEnteringItem:(NSString *)item; 
@end 

suivant encore en ChildController.h vous devez configurer une propriété de délégué ChildController.h

@property (nonatomic, weak) id <ChildControllerDelegate> delegate; 

En ChildController nous appelons un message sur le délégué lorsque nous sautons le contrôleur de vue.

Pour ce cas, le suivant sera appelé à didSelectRowAtIndex méthode

NSString *itemToPassBack = @"Pass this value back to ParentController"; 
[self.delegate addItemViewController:self didFinishEnteringItem:itemToPassBack]; 

Que ce soit pour ChildController. Maintenant, dans ParentController.h, dites à ParentViewController d'importer Child et de se conformer à son protocole.

importation "ChildController.h"

@interface ParentController: UIViewController Dans ParentController.m mettre en œuvre la méthode suivante de notre protocole

- (void)addItemViewController:(ChildController *)controller didFinishEnteringItem:(NSString *)item 
{ 
    NSLog(@"This was returned from ChildController %@",item); 
} 

La dernière chose que nous devons faire est de dire que ChildController ParentController est son délégué avant de pousser ChildController sur la pile de navigation.

ChildController *ChildController = [[ChildController alloc] initWithNib:@"ChildController" bundle:nil]; 
ChildController.delegate = self 
[[self navigationController] pushViewController:ChildController animated:YES];