UITableView委托方法未被调用

时间:2011-07-25 19:55:14

标签: iphone objective-c cocoa-touch uitabbarcontroller

我有一个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];
}

2 个答案:

答案 0 :(得分:0)

编辑:

你可以添加关于你的代表的更多细节吗?你什么时候设置的?如何定义didSelectRowAtIndexPath

我想在didSelectRowAtIndexPath内部,self.navigationController将为零,因为该控制器尚未推送。因此,您应该通过主视图控制器访问导航控制器,您将表视图添加为子视图。

答案 1 :(得分:0)

-addSubview:上的方法UIView期望传递UIView。在这种情况下,您传递的是MyTableViewController的实例。

试试这个:

[self.view addSubview:self.theTableViewController.view];