addSubview insertSubview выше Subview немного запутался, почему это не работает - PullRequest
0 голосов
/ 23 августа 2009

Я немного запутался, почему не работает нижнее представление.

Я добавляю некоторые (подпредставления) в мой navigController, и все это работает хорошо.

-(UITableView *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

... 
...

    [self.navigationController.view addSubview:ImageView];
    [self.navigationController.view addSubview:toolbar];

добавить точку в мое приложение. Я хочу добавить другую панель инструментов или изображение над панелью инструментов.

так скажем, я делаю что-то вроде этого

    -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
    {
    ...
    ...

        [self.navigationController.view insertSubview:NewImageView aboveSubview:toolbar];
//crucial of course [edit]
            rvController = [RootViewController alloc] initWithNibName:@"RootViewController" bundle:[NSBundle] mainBundle];
rvController.CurrentLevel += 1;
rvController.CurrentTitle = [dictionary objectForKey:@"Title"];
[self.navigationController pushViewController:rvController animated:YES];
rvController.tableDataSource = Children;
[rvController release];

Однако это не работает .. Кто-нибудь знает, что я здесь делаю не так ... Должен ли я использовать что-то еще вместо addSubview или проблема в другом месте?

1 Ответ

1 голос
/ 24 августа 2009

Из того, что вы опубликовали, похоже, что это должно работать.

Однако есть несколько других проблем. Во-первых, условно, что varibales, которые представляют экземпляры объектов, начинаются со строчной буквы. Так что ImageView и NewImageView должны быть imageView и newImageView.

Я бы убедился, что в вашем tableView:didSelectRowAtIndexPath: методе newImageView и на панели инструментов оба действительны. Они в вашем заголовочном файле?

Попробуйте и посмотрите, где ошибки:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{
...
...
    NSAssert(self.navigationController.view,@"WTF? self.navigationController.view is nil");
    NSAssert([self.navigationController.view superview],@"WTF? lf.navigationController.view  is not onscreen");
    NSAssert(newImageView,@"WTF? newImageView is nil");
    NSAssert(toolbar,@"WTF? toolbar is nil");
    NSAssert([toolbar superview],@"WTF? toolbar is on in the view");

    [self.navigationController.view insertSubview:newImageView aboveSubview:toolbar];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...