如何在Xcode中访问或操作另一个类的变量

时间:2012-02-16 00:51:43

标签: objective-c ios

我是IOS编程的新手,因此在下面的问题上有点挣扎。我将尽力描述问题,非常感谢任何帮助。

我创建了以下内容:

  • AboutViewController(.h,.m和.xib),它有两个名为 - mainView,infoView的子视图。 mainView和infoView接口在XIB文件中创建。
  • TestView(用于处理启动,在mainView和infoView之间切换的视图)

TestView.h如下:

@interface TestView : UIView {

    IBOutlet UIView *mainView;
IBOutlet UIView *infoView;

    UILabel *lbltitle;
    UIImageView *imgIcon;
IBOutlet UITextView *txtInfo1;
    IBOutlet UITextView *txtInfo2;
IBOutlet UITextView *txtInfo3;



}

@property (nonatomic, retain) IBOutlet UILabel *lbltitle;
@property (nonatomic, retain) IBOutlet UIImageView *imgIcon;

TestView.m如下:

#import "TestView.h"

#import <QuartzCore/QuartzCore.h>

@implementation TestView
@synthesize lbltitle, imgIcon;

-(void)awakeFromNib
{
[self addSubview:mainView];
}

在纵向模式下,视图效果很好但是在横向模式下,视图都有点搞砸了。我试图使用XIB,但我想你只能这么做,所以我决定以编程方式进行。

在AboutViewController.m中,我试图覆盖willAnimateRotationToInterfaceOrientation方法并根据方向放置对象。当我放置断点时,我可以看到代码被调用,除了它没有转换到UI,即UI没有变化。我究竟做错了什么 ?我应该以不同的方式接近这个。非常感谢任何建议或指导。

- (void)willAnimateRotationToInterfaceOrientation:  (UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{

   TestView *t = [[TestView alloc]init];

if (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft ||
    toInterfaceOrientation == UIInterfaceOrientationLandscapeRight)
    {
        [t.imgIcon setFrame:CGRectMake(10,74,165,190)];
        [t.lbltitle setFrame:CGRectMake(20, 10, 387, 21)];
    }
else
    {
        [t.imgIcon setFrame:CGRectMake(10,74,165,190)];
        [t.lbltitle setFrame:CGRectMake(189, 10, 387, 21)];

    }
}

1 个答案:

答案 0 :(得分:0)

特别的问题是您使用

操作刚刚创建的视图
TestView *t = [[TestView alloc]init];

您不会在任何地方显示视图,因此它位于内存中。您可以应用所需的所有更改,但是为了能够看到它们,您必须首先显示视图:

找到合适的父母并执行:

[parentview addSubview:t];

更一般地说,您不应该在轮换处理代码中创建新视图。