Objective c 为什么不是';这个子视图不是被删除了吗?
IBAction什么都不做。将“返回”日志记录到控制台,以便连接正常。调用iAction时,self.topView也不执行任何操作Objective c 为什么不是';这个子视图不是被删除了吗?,objective-c,ios,cocoa-touch,Objective C,Ios,Cocoa Touch,IBAction什么都不做。将“返回”日志记录到控制台,以便连接正常。调用iAction时,self.topView也不执行任何操作 -(IBAction)loadSettingsView:(id)sender; { if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) { [[NSBundle mainBundle] loadNibNamed:@"setting
-(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中所有顶级视图的数组。如果您想引用这些视图(这里我假设nib中有一个视图),您需要实际分配topView
变量。当前topView
可能为零,因此您的removeFromSuperview
调用没有任何作用。我希望我在这里没有做太多假设,但这应该可以解决您的问题。我假设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中所有顶级视图的数组。如果您想引用这些视图(这里我假设nib中有一个视图),您需要实际分配topView
变量。当前topView
可能为零,因此您的removeFromSuperview
调用没有任何作用。提供一个更简单的解决方案。只需在主视图的nib中创建一个新视图,并在其上附加一个IBOutlet。像做梦一样工作
-(IBAction)loadSettingsView:(id)sender;
{
[self.view addSubview:settingsView];
}
-(IBAction)loadMainView:(id)sender;
{
[settingsView removeFromSuperview];
}
为更简单的解决方案提供资金。只需在主视图的nib中创建一个新视图,并在其上附加一个IBOutlet。像做梦一样工作
-(IBAction)loadSettingsView:(id)sender;
{
[self.view addSubview:settingsView];
}
-(IBAction)loadMainView:(id)sender;
{
[settingsView removeFromSuperview];
}
什么是
topView
以及如何分配它?…哪个iAction不做任何事情?问题是“为什么不删除此子视图?”什么都不做的iAction加载MainView什么是topView
以及如何分配它?…哪个iAction不做任何事情?问题是“为什么不删除此子视图?”不执行任何操作的IBAction加载MainView…这似乎是一种分配topView的糟糕方式。我建议使用IBOutlet…这是有道理的。那么,我该如何使topView不为零呢?…这似乎是一种分配topView的糟糕方式。我建议使用IBOutlet…这是有道理的。那么我该如何让topView不为零呢?