#iphone #objective-c
#iPhone #objective-c
Вопрос:
Я использую пользовательский TableView с контроллером ячеек.Я загружаю контроллер ячейки из другого файла nib.Вот код интерфейса :
#import <UIKit/UIKit.h>
@interface BeginingCell : UITableViewCell {
IBOutlet UILabel *SectionTitle;
IBOutlet UILabel *Option1;
IBOutlet UILabel *Option2;
IBOutlet UILabel *Opiton3;
IBOutlet UILabel *Opiton4;
IBOutlet UIButton *button1;
IBOutlet UIButton *button2;
IBOutlet UIButton *button3;
IBOutlet UIButton *button4;
IBOutlet UIButton *ansBtn1;
IBOutlet UIButton *ansBtn2;
IBOutlet UIButton *ansBtn3;
IBOutlet UIButton *ansBtn4;
IBOutlet UIImageView *myImageView; //Here it is
NSMutableArray *myArray;
}
///Properties
@property(nonatomic,retain)IBOutlet UILabel *SectionTitle;
@property(nonatomic,retain)IBOutlet UILabel *Option1;
@property(nonatomic,retain)IBOutlet UILabel *Option2;
@property(nonatomic,retain)IBOutlet UILabel *Option3;
@property(nonatomic,retain)IBOutlet UILabel *Option4;
@property(nonatomic,retain)IBOutlet UIButton *button1;
@property(nonatomic,retain)IBOutlet UIButton *button2;
@property(nonatomic,retain)IBOutlet UIButton *button3;
@property(nonatomic,retain)IBOutlet UIButton *button4;
@property(nonatomic,retain)IBOutlet UIButton *ansBtn1;
@property(nonatomic,retain)IBOutlet UIButton *ansBtn2;
@property(nonatomic,retain)IBOutlet UIButton *ansBtn3;
@property(nonatomic,retain)IBOutlet UIButton *ansBtn4;
@property(nonatomic,retain)IBOutlet UIImageView *myImageView; //Here it is
@property(nonatomic,retain)NSMutableArray *myArray;
@end
And the implementation is like :
#import "BeginingCell.h"
@implementation BeginingCell
@synthesize SectionTitle,Option1,Option2,Option3,Option4,button1,
button2,button3,button4,myArray,myImageView,ansBtn1,ansBtn2,ansBtn3,ansBtn4;
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
// Initialization code.
}
return self;
}
- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
[super setSelected:selected animated:animated];
// Configure the view for the selected state.
}
- (void)dealloc {
[super dealloc];
}
@end
Я загружаю файл Cell Controller nib в свой TableView.Код представления таблицы выглядит следующим образом.Но проблема в том, что мое изображение не загружается.Это разрушение.
Я синтезировал следующим образом.
@synthesize MyTestArray,listOfItems,MyObject,selectedCountry,QuestionMutableArray,
Manipulatorobj,dictionary,SectionTitle,Option1,Option2,Option3,Option4,ansBtn1,ansBtn2,ansBtn3,ansBtn4;
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
dictionary = [QuestionMutableArray objectAtIndex:0];
static NSString *CellIdentifier = @"BeginingCell";
BeginingCell *cell=(BeginingCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
NSArray *topLevelObjects=[[NSBundle mainBundle] loadNibNamed:@"BeginingCell" owner:self options:nil ];
for(id CurrentObject in topLevelObjects)
{
if ([CurrentObject isKindOfClass:[BeginingCell class]]) {
cell=(BeginingCell *) CurrentObject;
break;
}
}
}
// Configure the cell.
if(indexPath.row==0)
{
cell.SectionTitle.text=[dictionary objectForKey:@"question"];
cell.Option1.text=[dictionary objectForKey:@"option1"];
cell.Option2.text=[dictionary objectForKey:@"option2"];
cell.Option3.text=[dictionary objectForKey:@"option3"];
cell.Option4.text=[dictionary objectForKey:@"option4"];
[cell.button1 setTitle:@"A." forState:UIControlStateNormal];
[cell.button2 setTitle:@"B." forState:UIControlStateNormal];
[cell.button3 setTitle:@"C." forState:UIControlStateNormal];
[cell.button4 setTitle:@"D." forState:UIControlStateNormal];
[cell.button4 setTitle:@"D." forState:UIControlStateNormal];
[MyTestArray release];
// [cell.ansBtn1 setTitle:@"A." forState:UIControlStateNormal];
}
//---Setting the image here---
UIImage *imgDef=[UIImage imageNamed:@"man_kirstie_alley.jpg"]; //It's crushing here
cell.image = imgDef;
return cell;
}
Есть идеи, что здесь происходит не так?
Ответ №1:
Я думаю, это потому, что в image
ячейке uitableviewcell
объекта отсутствует свойство, а также у вас нет имени переменной image типа UIImage в вашем BeginingCell
классе.
Итак, я думаю, что вам нужно сделать либо
cell.imageView.image = [UIImage imageNamed:@"man_kirstie_alley.jpg"];
или
cell. myImageView.image = [UIImage imageNamed:@"man_kirstie_alley.jpg"];
предполагая, что вы не допустили ошибки при вставке своего кода сюда
Комментарии:
1. ячейка. myImageView.image = [UIImage imageNamed:@»man_kirstie_alley.jpg «]; После использования приведенного выше кода я получаю следующее исключение …-[BeginingCell myImageView]: нераспознанный селектор, отправленный экземпляру 0x4b82cf0 2011-04-13 17:17:07.784 SC.Pandit[5626:207] *** Завершение работы приложения из-за неперехваченного исключения ‘NSInvalidArgumentException’, причина: ‘-[BeginingCell myImageView]: нераспознанный селектор, отправленный экземпляру 0x4b82cf0 ‘
2. Но у вас есть переменная
myImageView
типаImageView
, верно?
Ответ №2:
Это может быть проблема с вашим наконечником.
установите точку останова и проверьте значение ячейки, действительно ли оно обладает свойствами, которые вы синтезировали.
Я рекомендую вам создавать свои представления с проблемами в вашем подклассе. вместо того, чтобы использовать перо, также вам необходимо освободить любое сохраненное свойство в функции dealloc вашего подкласса