我不确定我的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
答案 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;