我有一个UIViewController,它有UISegmentedControl,显示3个其他视图,具体取决于通过以下方式选择的段:
- (void)segmentedControl:(SVSegmentedControl*)segmentedControl didSelectIndex:(NSUInteger)index
{
if (index == 0)
{
MyTableViewController *myViewController = [[MyTableViewController alloc] initWithNibName:@"MyTableViewController" bundle:nil];
myViewController.view.frame = CGRectMake(0.,40.,self.view.frame.size.width,self.view.frame.size.height-40.);
self.theTableViewController = myViewController;
[myViewController release];
[self.view addSubview: self.theTableViewController.view];
}
但是当我从这个视图中的单元格中选择一行时,它不会推送到下一个。这是因为我手动将视图控制器的视图添加到视图层次结构中,因此它不受navcontroller管理。我想我需要制作一个属性或者任何人都可以插入的东西?
编辑:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
SpecificExerciseTableViewController *specificExerciseTableViewController = [[SpecificExerciseTableViewController alloc] initWithNibName:@"SpecificExerciseTableViewController" bundle:nil];
specificExerciseTableViewController.exerciseArray = [[self.muscleArray objectAtIndex:indexPath.row]objectForKey:@"exercises"];
specificExerciseTableViewController.muscleName = [[self.muscleArray objectAtIndex:indexPath.row]objectForKey:@"muscleName"];
NSString *muscleURL = [[self.muscleArray objectAtIndex:indexPath.row]objectForKey:@"musclePicture"];
specificExerciseTableViewController.muscleURL = muscleURL;
[self.navigationController pushViewController:specificExerciseTableViewController animated:YES];
[specificExerciseTableViewController release];
}
答案 0 :(得分:0)
编辑:
你可以添加关于你的代表的更多细节吗?你什么时候设置的?如何定义didSelectRowAtIndexPath
?
我想在didSelectRowAtIndexPath
内部,self.navigationController
将为零,因为该控制器尚未推送。因此,您应该通过主视图控制器访问导航控制器,您将表视图添加为子视图。
答案 1 :(得分:0)
-addSubview:
上的方法UIView
期望传递UIView
。在这种情况下,您传递的是MyTableViewController
的实例。
试试这个:
[self.view addSubview:self.theTableViewController.view];