0

我有两个视图,说 A 和 B。两者都是 UIViewController 类的子类。视图 A 不是表视图,但它是一个启用滚动的视图,因为它超过了 iphone 尺寸 320*460。视图 B 不是滚动视图。我在单击视图 A 中的某个按钮时调用视图 B,例如,

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

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

4

4 回答 4

0

在将视图 B 添加到主视图之前,请从其父视图中删除视图 A。

在 .h 中取两个对象

ViewA *aObject; 视图B *bObject;

在 View DidLoad 中像这样创建 View A 和 View 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];

同样在后退按钮操作中,您可以添加类似的代码

[bObject.view removeFromSuperView];

[self.view addSubView:aObject.view];

在您的应用程序中尝试这段代码片段,我希望它会对您有所帮助。它不会丢失你以前的 cals 值

于 2012-08-31T03:49:19.130 回答
0

问题是您将视图 B 添加到视图 A 子视图中,而视图 A 位于滚动视图中,因此您需要在界面生成器 smallViewB 中创建单独的 UIView 插座和 UIView 视图 A,无论您需要显示视图 B 的大小。

然后将子视图添加到您在上面创建的 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];
}
于 2012-08-31T04:09:24.183 回答
0

尝试在你身上添加这个-(IBAction)bt:(id)Sender

ViewA.your_scroll_view.scrollEnabled=NO;

如果我理解正确,这可能是您想要做的。

于 2012-08-31T04:45:00.023 回答
0

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

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

于 2012-09-02T15:41:10.217 回答