我使用以下代码更改了uiimageview的图像,这对我有用
-(void)viewDidLoad{
[super viewDidLoad];
UIImage *tempImage = [UIImage imageNamed:@"instant_poetry_small.png" ];
drawImage.image = tempImage;
}
-(id)initWithImage:(NSString *)img{
[super viewDidLoad];
return self;
}
但我想在init方法中更改uiimageview的图像。为此,我尝试了以下代码,但它没有改变uiimageview的图像。
-(void)viewDidLoad{
[super viewDidLoad];
}
-(id)initWithImage:(NSString *)img{
[super viewDidLoad];
UIImage *tempImage = [UIImage imageNamed:@"instant_poetry_small.png" ];
drawImage.image = tempImage;
return self;
}
以下是我的应用程序委托方法
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[[TTURLRequestQueue mainQueue] setMaxContentLength:0];
TTNavigator *navigator = [TTNavigator navigator];
navigator.window = _window;
TTURLMap *map = navigator.URLMap;
[map from:@"tt://appPhotos" toSharedViewController:[PhotoViewController class]];
[map from:@"tt://photo/detail?name=(initWithImage:)" toSharedViewController:[PhotoView class]];
[navigator openURLAction:[TTURLAction actionWithURLPath:[NSString stringWithFormat:@"tt://photo/detail?name=%@",@"level_me_up_small.png"]]];
[_window makeKeyAndVisible];
return YES;
}
你能告诉我上面的示例代码有什么区别吗?
答案 0 :(得分:2)
在方法viewDidLoad
中,nib已完成加载,并且所有UI元素都可用。
不要从viewDidLoad
调用init
,因为现在可以判断视图(读取笔尖)是否已加载。
您写的initWithImage
方法不正确,不能以这种方式工作。
如果您确实想要创建自定义init
,则更像是“
-(id)initWithImage:(NSString *)img{
self= [super init];
if (self) {
// Create a property for this call where you keep the image.
self.drawImage = [UIImage imageNamed:img];
}
return self;
}
但是这不会加载任何NIB,所以你必须调用super initWithNIB:或者通过代码创建元素。