如何删除Objective C中的视图

时间:2013-08-07 08:24:45

标签: ios objective-c uitableview cocoa-touch uiviewcontroller

我有ViewCupsViewControllerLabel,点击后,TableViewAddressTableController)从屏幕底部滑动,留在下半部分。 在TableView中,当按下Ok Button时,我想要更改Label的值并使用动画删除TableView(即,滑到底部)。

这是我的代码:

CupsViewController

点击Label

时调用的方法
- (IBAction)showPop:(id)sender
{
    addressTableController = [[AddressTableController alloc]initWithStyle:UITableViewStyleGrouped];
    [addressTableController setDelegate:self];
    [[self view] addSubview:[addressTableController myTableView]];
    [UIView animateWithDuration:1.0 delay:0 options:UIViewAnimationOptionBeginFromCurrentState animations:^{
        [[addressTableController myTableView] setFrame:CGRectMake(0, kScreenHeight * 0.5, kScreenWidth, kScreenHeight * 0.5)];
    } completion:nil];
}

按下AddressTableController时从Button调用的方法

- (void)addressTableController:(AddressTableController *)viewController didChooseValue:(int)value {
    direccionLabel.text = [[[[myAppDelegate usuarioActual] cups] objectAtIndex:value] direccion];
    [addressTableController.view removeFromSuperview];
}

图片

enter image description here

正如您所看到的,我尝试过使用removeFromSuperview,但它什么也没做。如何将TableView滑到底部?

1 个答案:

答案 0 :(得分:1)

似乎您myTableView属性返回不同的视图,而不是view属性中引用的视图。所以你基本上将前者添加为子视图([[self view] addSubview:[addressTableController myTableView]];),但尝试删除后者([addressTableController.view removeFromSuperview];)。

只做

[[addressTableController myTableView] removeFromSuperview];

而不是

[addressTableController.view removeFromSuperview];

你走了。队友的欢呼声! :)


P.S。 如果你想为视图设置动画,你可以这样做

[UIView animateWithDuration:1.0 delay:0 options:UIViewAnimationOptionBeginFromCurrentState animations:^{
    // animation code...
} completion:^(BOOL finished) {
    [[addressTableController myTableView] removeFromSuperview];
}];