ViewController没有使用自定义类更新UIView

时间:2013-12-17 06:01:20

标签: ios objective-c uiviewcontroller storyboard

我不确定我的storyboard文件中的视图控制器是否正确连接到我的视图,但这是设置的细分 - 我正在使用xcode 5

一个使用自定义类CICBoostGaugeViewController的视图控制器(在身份检查器中配置)。 一个使用自定义类CICGaugeBuilder的视图(在storyboard文件中的身份检查器中配置)。

CICGaugeBuilder类绘制仪表并在init方法中设置仪表的属性。当我在模拟器中运行此设置时,仪表会根据CICGaugeBuilder中初始化的仪表参数正确显示。到目前为止没问题。

我的问题是当我在视图控制器中创建CICGaugeBuilder类的实例并设置属性时,它们在我在sim中运行时不显示,只有在{{1中初始化的值应用了类。

CICBoostGaugeViewController.h

CICGaugeBuilder

CICBoostGaugeViewController.m

#import <UIKit/UIKit.h>
#import "CICGaugeBuilder.h"

@class CICGaugeBuilder;

@interface CICBoostGaugeViewController : UIViewController{
    CICGaugeBuilder *boostGauge;
}

@property (nonatomic, retain) IBOutlet CICGaugeBuilder *boostGauge;


@end

这是CICGaugeBuilder类中的初始化方法:

#import "CICBoostGaugeViewController.h"
#import "CICGaugeBuilder.h"


@interface CICBoostGaugeViewController ()

@end

@implementation CICBoostGaugeViewController

@synthesize boostGauge;

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.boostGauge.minGaugeNumber = 0;
    self.boostGauge.maxGaugeNumber = 25;
    self.boostGauge.gaugeLabel = @"Boost/Vac";
    self.boostGauge.incrementPerLargeTick = 10;
    self.boostGauge.tickStartAngleDegrees = 135;
    self.boostGauge.tickDistance = 270;
    self.boostGauge.menuItemsFont = [UIFont fontWithName:@"Helvetica" size:14];
    self.boostGauge.value = 10;

}

- (void)viewDidUnload
{
    //self.boostGauge = nil;
}

- (void)didReceiveMemoryWarning
{

    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

请注意,在模拟器中运行时,会保留maxGaugeNumber为100。仪表绘制正确,但问题是视图控制器中的对象实例未使用。我已经尝试了self.minGaugeNumber = 0; self.maxGaugeNumber = 100; self.gaugeType = 2; self.gaugeLabel = @"Boost/Vac"; self.incrementPerLargeTick = 10; self.tickStartAngleDegrees = 135; self.tickDistance = 270; self.menuItemsFont = [UIFont fontWithName:@"Helvetica" size:14]; 但它没有用。

在我的故事板文件中,视图控制器没有任何引用插座。我认为这需要连接到app委托,但我不确定。 [self.boostGauge SetNeedsDisplay]应用程序委托的视图控制器不允许建立连接。

这是CICAppDelegate.h文件:

Dragging

1 个答案:

答案 0 :(得分:1)

当我通过你的应用程序时,我找到了。

致电[self.boostGauge SetNeedsDisplay]后不会产生任何影响,因为: SetNeedsDisplay调用- (void)drawRect:(CGRect)rect

CICGaugeBuilder Class方法

- (void)drawRect:(CGRect)rect
{
    CGRect innerFrame;
  //  self.value = 0;

    [self initializeGauge];
}

这里再次调用initialize方法和初始化方法将再次将值设置为初始值。 最终没有效果。

最重要的是,您使用

调用值
CICAppDelegate *ap=(CICAppDelegate *)[[UIApplication sharedApplication]delegate];

    ap.guage.value=50;

在appDel中获取CICGaugeBuilder Class的对象引用。

将以下内容添加到initialiseGuageMethod

  CICAppDelegate *ap=(CICAppDelegate *)[[UIApplication sharedApplication]delegate];
    ap.guage=self;