Ich arbeite an einer App, wo ich ein TableView mit Benutzern gefüllt anzeigen möchte, und wenn die Zeile ausgewählt ist, wird eine neue Ansicht angezeigt, die eine Konversation (also im Grunde eine Messaging-App) enthält. Für den Moment möchte ich nur, dass wenn ich eine Zeile auf meinem FirstViewController berühre, der SecondViewController mit dem Namen des Benutzers angezeigt wird, der auf einem Etikett ausgewählt ist. Aber ich kann es nicht zum Laufen bringen, denn jedes Mal, wenn ich eine Zeile berühre, ist der IndexPfad 0, dh es ist immer der erste Benutzername, der angezeigt wird. Hier ist ein Teil meines Code:Übermittle Daten über das Segment auf TableView
#import "GSBChatViewController.h"
#import "GSBConversationViewController.h"
@interface GSBChatViewController()
@property (weak, nonatomic) IBOutlet UITableView *userTableView;
@end
@implementation GSBChatViewController
@synthesize chatUsers;
- (void)viewDidLoad {
[super viewDidLoad];
GSBChatUsers *user1 = [[GSBChatUsers alloc]initWithName:@" John DOE" andPicture:@"photo.jpg" andLastMessage:@"Ca marche!"];
GSBChatUsers *user2 = [[GSBChatUsers alloc]initWithName:@"Justine DUBOIS" andPicture:@"photo.jpg" andLastMessage:@"Salut, ça va?"];
GSBChatUsers *user3 = [[GSBChatUsers alloc]initWithName:@"Jacques LAPORTE" andPicture:@"photo.jpg" andLastMessage:@"Réunion le 23 à 15h, c'est bon pour toi?"];
GSBChatUsers *user4 = [[GSBChatUsers alloc]initWithName:@"Guillaume DUPOND" andPicture:@"photo.jpg" andLastMessage:@"OK, parfait"];
GSBChatUsers *user5 = [[GSBChatUsers alloc]initWithName:@"Françoise MARTIN" andPicture:@"photo.jpg" andLastMessage:@"Tu as posé tes congés?"];
GSBChatUsers *user6 = [[GSBChatUsers alloc]initWithName:@"Jean-Jacques CELESTIN" andPicture:@"photo.jpg" andLastMessage:@"Je prends note"];
chatUsers = [[NSArray alloc]initWithObjects:user1,user2,user3,user4,user5,user6, nil];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
#pragma mark - Navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
NSIndexPath *indexPath = [self.userTableView indexPathForCell:sender];
NSLog(@"Path: %@",indexPath);
GSBConversationViewController *destVC = [segue destinationViewController];
GSBChatUsers *selectedUser =[chatUsers objectAtIndex:indexPath.row];
NSLog(@"%ld",[self.userTableView indexPathForCell:sender].row);
NSString *userName = selectedUser.name;
NSLog(userName);
destVC.Test=userName;
}
#pragma mark - Datasource
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
// Retourne le nombre d'éléments de notre liste
NSLog(@"Number of rows: %ld",chatUsers.count);
return [chatUsers count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
// Instancie notre cellule par son identifier
GSBTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"userCell"];
// On récupère l'item que l'on va traiter
GSBChatUsers *user = [chatUsers objectAtIndex:indexPath.row];
// On affecte les valeurs de notre user aux éléments de notre cellule
[cell.userName setText:user.name];
[cell.profilePicture setImage:[UIImage imageNamed:user.picture]];
[cell.lastMessage setText:user.lastMessage];
NSLog(@"%@",chatUsers);
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
NSLog(@"%@",_cellTitle);
//[self performSegueWithIdentifier:@"conversationSegue" sender:[chatUsers objectAtIndex:indexPath.row]];
}
@end
ich this answer sah sowie this one aber keiner von ihnen geholfen. (Sie haben mir geholfen, weil ich vorher nicht einmal den Text des Etiketts ändern konnte).
Haftungsausschluss: Dies ist für ein Schulprojekt, und ich bin zu hundert Prozent erlaubt, um Hilfe im Internet zu fragen. Da Englisch nicht meine Muttersprache ist, bin ich in einigen Punkten nicht klar, bitte lassen Sie es mich wissen, wenn Sie weitere Informationen benötigen.
Danke für Ihre Hilfe!
so haben Sie den Übergang vom 'FirstViewController' zum' SecondViewController' per Drag & Drop in Storyboard verdrahtet? –
@ AndréSlotta Ja, von der Prototyp-Zelle des erstenViewControllers zu dem zweiten ViewController – nommis
gut in diesem Fall brauchen Sie nicht die 'didSelectRowMethod', sondern nur' PrepareForSegue'. und in prepareForSegue druckt es immer die Zeile ** 0 ** aus? –