Хорошо, я дергаю себя за волосы, это не имеет смысла, так что это должно быть либо ошибка, либо какая-то чрезвычайно глупая ошибка, которую я совершаю.
Вот ситуация: у меня есть UIViewController с файлом xib. У него есть UIView, подключенный к свойству представления, UIImageView, подключенный к свойству с именем imageView, и UISegmentedControl, подключенный к segmentControl.
Тем не менее, в моем коде я не могу назначить изображение представлению изображения. Когда я NSLog объект, я получаю адрес 0x0, поэтому он вообще не связывается. У меня есть привязки, настроенные в конструкторе интерфейсов, я перезапустил XCode, очистил и построил проект. Ничего не работает, и я потратил глупое количество времени, пытаясь понять это на данный момент. Я также NSLoged объект segmentControl и также получаю 0x0. Таким образом, ничего из XIB не связывается с кодом, но загружается сам XIB, потому что объекты отображаются на экране.
У кого-нибудь есть идеи навскидку, что я мог упустить? Это такая простая вещь, что невероятно расстраивает, что она вдруг отказывается работать.
Вот код ниже, в этом случае я обращаюсь к объектам в установщике для projectId, но я также пытался получить доступ к imageView из другого класса, и это тоже не сработало (и да, у меня было объявление @property и синтез для imageView когда пробовал).
Диаграммвиевконтроллер.h:
#import <UIKit/UIKit.h>
@interface DiagramViewController : UIViewController
{
NSUInteger projectId;
IBOutlet UIImageView *imageView;
IBOutlet UISegmentedControl *segmentControl;
}
@property NSUInteger projectId;
@end
DiagramViewController.m:
#import "DiagramViewController.h"
@implementation DiagramViewController
@synthesize projectId;
-(void)setProjectId:(NSUInteger)projId
{
NSLog(@"imageView: %@", imageView);
NSLog(@"segmentControl: %@", segmentControl);
projectId = projId;
NSString *filePath = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%i_schem", projectId] ofType:@"png" inDirectory:@"project-details/images/diagrams"];
NSData *imageData = [NSData dataWithContentsOfFile:filePath];
imageView.image = [UIImage imageWithData:imageData];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Overriden to allow any orientation.
return YES;
}
- (void)didReceiveMemoryWarning {
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
- (void)viewDidUnload {
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (void)dealloc {
[super dealloc];
}
@end
А вот изображение подключений Interface Builder:
-loadView
, но я хотел бы увидеть код, чтобы мы могли правильно ответить на этот вопрос. - person jer   schedule 11.11.2010