iphone App中先前视图的滚动在下一个视图中不会被禁用

时间:2012-08-31 03:45:49

标签: iphone xcode uiscrollview addsubview

我有两个观点说A& B.两者都是UIViewController类的子类.View A不是Table View,但它是一个支持滚动的视图,因为它超过了iphone尺寸320 * 460。视图B不是滚动视图。我在点击视图A中的某个按钮时调用视图B,

-(IBAction)bt:id(Sender)
    {
        B *mB=[[B alloc]initWithNib:@"B" bundle:nil];
        [self.view addSubView:mB.view];
    }

问题是,由于视图A较大,因此当B通过视图A加载时,甚至视图A在视图B中部分可见。请帮助我克服这个问题吗?

4 个答案:

答案 0 :(得分:0)

在将视图B添加到主视图之前,从其超级视图中删除视图A.

在.h中的

采取两个对象

ViewA * aObject; ViewB * bObject;

在视图中,DidLoad以这种方式创建视图A和视图B的两个对象

aObject = [[ViewA alloc] initWithNibName:@“ViewA”bundle:nil];

bObject = [[ViewB alloc] initWithNibName:@“ViewB”bundle:nil];

[self.view addSubView:aObject.view];

如果要添加视图B,请添加此代码

[aObject.view removeFromSuperView];

[self.view addSubView:bObject.view];

同样在IN Back Button操作中,您可以添加

之类的代码

[bObject.view removeFromSuperView];

[self.view addSubView:aObject.view];

在您的应用程序中尝试使用此代码段代码,我希望它能为您提供帮助。它不会丢失你以前的calss值

答案 1 :(得分:0)

问题是您要将视图B添加到视图A子视图,而视图A位于滚动视图中,因此您需要在Interface Builder中创建单独的UIView Outlet和UIView smallViewB视图A显示视图B所需的任何大小。< / p>

然后将子视图添加到您在上方创建的View Outlet。 如果问题仍然存在,请告诉我。

@interface ViewController A:UIViewController
@property(nonautomic,retain)IBOutlet UIView *smallViewB;

@implementation ViewController A
@synthesize smallViewB; //Make connection smallViewB in Interface Builder.

-(IBAction)bt:id(Sender) 
{ 
   B *mB=[[B alloc]initWithNib:@"B" bundle:nil];
   [self.smallViewB addSubView:mB.view];
}

答案 2 :(得分:0)

尝试在你的 - (IBAction)bt:(id)Sender

中添加
ViewA.your_scroll_view.scrollEnabled=NO;

如果我理解的话,这可能是你想要做的。

答案 3 :(得分:0)

感谢您的建议,但我找到了解决问题的不同方法。

当在滚动视图A上添加另一个视图,即视图B时,我相应地重置了A的滚动视图尺寸,使其不可见。此外,当我按下视图B中的后退按钮时,我再次将视图A的滚动视图尺寸设置为其先前的值。此外,我使View A成为View B的委托,因为在按下B中的Back Button时,我需要调用一个在View A中定义的函数,它是View B协议的一部分。