我在故事板中使用表视图控制器。
我目前在故事板中的导航控制器中嵌入了一个tableview控制器。此表视图控制器链接到ObjectiveC文件。
通过代码我可以使用tableView didSelectRowAtIndexPath方法显示另一个包含正确数据的表视图控制器。
代码:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
WorkoutType *workoutType = (WorkoutType *)[self.fetchedResultsController objectAtIndexPath:indexPath];
WorkoutSetViewController *detailViewController = [[WorkoutSetViewController alloc] initWithWorkoutType:workoutType];
[self.navigationController pushViewController:detailViewController animated:YES];
}
但是,如果我尝试在storyboard中添加另一个表视图控制器,将其与objectiveC视图控制器文件关联并将第一个TVC连接到它,则在运行代码时不会显示该表视图控制器。
我需要直观地自定义第二个表视图,并尝试使用segue push ...如下所示:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"show"]) {
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
WorkoutType *workoutType = (WorkoutType *)[self.fetchedResultsController objectAtIndexPath:indexPath];
//WorkoutSetViewController *detailViewController = [[WorkoutSetViewController alloc] initWithWorkoutType:workoutType];
WorkoutSetViewController *destViewController = segue.destinationViewController;
destViewController.workoutType = workoutType;
//[self.navigationController pushViewController:detailViewController animated:YES];
}
}
但是当我运行此代码时,第二个表视图控制器甚至没有加载,尽管应用程序没有崩溃。
无论我做错什么都必须简单,任何帮助都会受到赞赏。
谢谢
答案 0 :(得分:2)
简单您必须浏览下面的代码。 (当您在同一个故事板ViewController中工作时,无需设置故事板)
(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if(indexpath.row==0)//for first row click
{
WorkoutSetViewController *objWorkoutSetVC=[[WorkoutSetViewController alloc] i nitWithNibName:@"WorkoutSetViewController" bundle:nil];
[self.navigationController pushViewController:objWorkoutSetVC animated:YES];
}
else if(indexpath.row==1)//for second row click
{
//Put code in which screen you have to navigate
}
}
答案 1 :(得分:0)
NOT Alloc初始化您的新视图控制器。请改用此代码:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
WorkoutSetViewController *detailViewController = (WorkoutSetViewController *)[storyboard instantiateViewControllerWithIdentifier:@"coolID"];
[self.navigationController pushViewController:detailViewController animated:YES];
为MainStoryboard
编写您的故事板名称,并为coolID
编写您在故事板中设置的视图控制器ID名称。