UITableView делегат методов не вызывается - PullRequest
0 голосов
/ 25 июля 2011

У меня есть 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 голосов
/ 26 июля 2011

Метод -addSubview: на UIView ожидает, что будет передано UIView. В этом случае вы передаете экземпляр MyTableViewController.

Попробуйте это:

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

0 голосов
/ 26 июля 2011

EDIT:

Не могли бы вы добавить более подробную информацию о вашем делегате? когда вы устанавливаете это? как определяется didSelectRowAtIndexPath?

Полагаю, что внутри didSelectRowAtIndexPath, self.navigationController будет равно нулю, поскольку этот контроллер не был нажат. Итак, вы должны получить доступ к контроллеру навигации через контроллер основного представления, где вы добавляете табличное представление как подпредставление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...