objective-c - 为什么这个 subview 没有被删除?

标签 objective-c ios cocoa-touch

IBAction 什么都不做。将“返回”记录到控制台,以便连接正常。调用 IBAction 时,self.topView 也不执行任何操作

-(IBAction)loadSettingsView:(id)sender;

{

    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
        [[NSBundle mainBundle] loadNibNamed:@"settingsView_iphone" owner:self options:nil]; 
    } else {
        [[NSBundle mainBundle] loadNibNamed:@"settingsView_ipad" owner:self options:nil];
    }
    [self.view addSubview:topView];
}

-(IBAction)loadMainView:(id)sender;
{
    [topView removeFromSuperview];
    NSLog(@"back");

}

最佳答案

希望我没有在这里做出太多假设,但这应该可以解决您的问题。我假设 topView 是当前类的成员:

-(IBAction)loadSettingsView:(id)sender;

{

    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
        topView = [[[NSBundle mainBundle] loadNibNamed:@"settingsView_iphone" owner:self options:nil] objectAtIndex:0]; 
    } else {
        topView = [[[NSBundle mainBundle] loadNibNamed:@"settingsView_ipad" owner:self options:nil] objectAtIndex:0];
    }
    [self.view addSubview:topView];
}

-(IBAction)loadMainView:(id)sender;
{
    [topView removeFromSuperview];
    NSLog(@"back");

}

基本上,您使用的 loadNibNamed 方法返回一个包含 nib 中所有顶级 View 的数组。如果你想引用这些 View (这里我假设 Nib 中有一个 View ),你需要实际分配你的 topView 变量。目前 topView 可能是 nil,所以您的 removeFromSuperview 调用什么都不做。

关于objective-c - 为什么这个 subview 没有被删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11003363/

相关文章:

iphone - 将 NIB 文件加载到 UIView 时遇到问题

ios - 如何检测是否按下了 show (push) segue navigation controller?

objective-c - 使用从 UIImagePickerController 保存的图像进行内存管理

ios - 指向整数转换的不兼容指针将 'void *' 发送到参数

ios - 检测 IAP 取消

objective-c - XCode4 未链接新编译的静态库(依赖)项目

ios - 使用 afnetworking 3.0 将应用程序视频上传到服务器

ios - Xcode 继续使用旧的框架版本

ios - TransformedValueClass 返回 AnyObject 类型的数组

iphone - 使用 UILocalNotification 播放应用程序包中没有的声音