【发布时间】:2015-07-02 12:42:27
【问题描述】:
我目前正在构建一个向下钻取的表格视图,但遇到了一些问题。我正在使用 prepareforsegue 调用下一个视图,并且正在使用 didselectrowatIndexpath 将数据从源视图传递到目标视图。
我有以下问题: 1)当我选择一个单元格时,prepareforsegue 在 didSelectRowAtIndexPath 之前调用,这意味着在我的数据可以传递到下一个视图之前调用视图 2) 我的 didselectrowatIndexpath 中有一个 performeguewithidentifier,它似乎调用了 segue 两次(一次是使用 prepareforsegue 初始,第二次是使用 performeguewithidentifier)。
使用故事板将数据从一个表视图传递到另一个表视图的最佳做法是什么?调用下一个视图的最佳方法是什么?
这是我的一些代码:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
if (level == 0) {
int muscleID = [muscleIDArray[indexPath.row] intValue];
NSLog(@"MuscleID: %i", muscleID);
NSArray *submuscleArray = [self submuscleGroup:muscleID valueForKeyPath:@"submuscleID"];
if (submuscleArray == nil || [submuscleArray count] == 0) {
currentMID = muscleID;
level = 2;
[self performSegueWithIdentifier:@"drillDown2" sender:self];
} else {
currentMID = muscleID;
level = 1;
[self performSegueWithIdentifier:@"drillDown" sender:self];
}
} else if (level == 1) {
level = 2;
currentSMID = [submuscleIDArray[indexPath.row] intValue];
[self performSegueWithIdentifier:@"drillDown2" sender:self];
} else {
detailTitle = [[exerciseList valueForKey:[exerciseListSorted objectAtIndex:indexPath.row]] objectAtIndex:0];
exerciseID = [[exerciseListSorted objectAtIndex:indexPath.row] intValue];
[self performSegueWithIdentifier:@"showExerciseDetail" sender:self];
}
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if ([segue.identifier isEqualToString:@"showExerciseDetail"]) {
//ExerciseDetail *exerciseDetail = (ExerciseDetail *)segue.destinationViewController;
//exerciseDetail.pageTitle = detailTitle;
UINavigationController *navController = (UINavigationController *)segue.destinationViewController;
ExerciseDetail *exerciseDetail = (ExerciseDetail *)navController.topViewController;
exerciseDetail.title = detailTitle;
exerciseDetail.exerciseID = exerciseID;
} else if ([segue.identifier isEqualToString:@"drillDown"] || [segue.identifier isEqualToString:@"drillDown2"]){
//UINavigationController *navController = (UINavigationController *)segue.destinationViewController;
ExerciseTableViewController *tableView = segue.destinationViewController;
tableView.delegate = self;
tableView.level = level;
tableView.currentSMID = currentSMID;
tableView.currentMID = currentMID;
NSLog(@"level: %i, currentSMID: %i, currentMID: %i", level, currentSMID, currentMID);
} else if ([segue.identifier isEqualToString:@"addExercise"]){
UINavigationController *navController = (UINavigationController *)segue.destinationViewController;
AddExerciseViewController *addExercise = (AddExerciseViewController *)navController.topViewController;
addExercise.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
} else if ([segue.identifier isEqualToString:@"dismissView"]){
[self dismissViewControllerAnimated:YES completion:nil];
}
}
【问题讨论】:
标签: ios objective-c uitableview