gpt4 book ai didi

ios - ViewController 未使用自定义类更新 UIView

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:37:54 26 4
gpt4 key购买 nike

我不确定我的 View Controller 是否在我的 storyboard 中文件正确连接到我的 View ,但这是设置的分割 - 我正在使用 xcode 5 :

使用自定义类的一个 View Controller CICBoostGaugeViewController (在身份检查器中配置)。使用自定义类的一个 View CICGaugeBuilder (在 Storyboard文件中的身份检查器中配置)。

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

我的问题是当我创建 CICGaugeBuilder 的实例时在我的 View Controller 中类并设置属性,当我在 sim 中运行它们时它们不会显示,只有在 CICGaugeBuilder 中初始化的值类被应用。

CICBoostGaugeViewController.h

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

@class CICGaugeBuilder;

@interface CICBoostGaugeViewController : UIViewController{
CICGaugeBuilder *boostGauge;
}

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


@end

CICBoostGaugeViewController.m

#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

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

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];

请注意,在模拟器中运行时会保留 100 的 maxGaugeNumber。仪表绘制正确,但问题是未使用 View Controller 中的对象实例。我试过了 [self.boostGauge SetNeedsDisplay]但它没有用。

在我的 Storyboard文件中, View Controller 没有任何引用 socket 。我认为这需要连接到应用程序委托(delegate),但我不确定。 Dragging应用程序委托(delegate)的 View Controller 不允许建立连接。

这是 CICAppDelegate.h 文件:

#import <UIKit/UIKit.h>

@class CICBoostGaugeViewController;

@interface CICAppDelegate : UIResponder <UIApplicationDelegate>{
UIWindow *window;
CICBoostGaugeViewController *viewController;
}

@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet CICBoostGaugeViewController *viewController;

@end

最佳答案

当我浏览你的 App 时,我发现了。

调用[self.boostGauge SetNeedsDisplay]后不会产生任何影响,因为: SetNeedsDisplay调用 - (void)drawRect:(CGRect)rect CICGaugeBuilder Class的方法|

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

[self initializeGauge];
}

在这里你再次调用初始化方法,初始化方法将再次设置值到初始值。最终没有效果。

最重要的是你调用值(value)使用

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

ap.guage.value=50;

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

将以下内容添加到 initialiseGuageMethod

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

关于ios - ViewController 未使用自定义类更新 UIView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20627060/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com