2016-04-15 14 views
1

TableViewを配置した中央に別の小さなUIViewを配置し、このテーブルの配列からデータを表示する方法がわからないViewControllerがあります。どんな助けでも大歓迎です。テーブルでUIViewをロードするときに、dataSourceからセルを取得できませんでした

-(void) animateResults { 

_resultsLabel.text = [NSString stringWithFormat:@"You Scored %d", runningScore ]; 

resultsTable.delegate = self; 
resultsTable.dataSource = self; 
[self.resultsTable registerClass:[UITableViewCell self] forCellReuseIdentifier:@"resultsListCell"]; 
[self.resultsTable reloadData]; 
[self.view layoutIfNeeded]; 
[UIView animateWithDuration:0.3 animations:^{ 
    _resultsView.frame = self.view.frame; 

} completion:^(BOOL finished){ 

    NSLog(@"%@", questionsArray); 

}]; 

} 

私はそのデータソースからセルを取得できませんでした。このコードを使用してテーブルをロードしようとしています。テーブルのHERESにコード

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 
//Return number of sections 
return 1; 

} 

//get number of rows by counting number of challenges 
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection: (NSInteger)section { 
return questionsArray.count; 
} 


//setup cells in tableView 
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath: (NSIndexPath *)indexPath{ 
//setup cell 
static NSString *CellIdentifier = @"resultsListCell"; 
resultsViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

NSDictionary *results = [questionsArray objectAtIndex:indexPath.row]; 

NSString *resultsName = [results objectForKey:@"answers"]; 

BOOL correct = [[results objectForKey:@"correct"] boolValue]; 

if (!correct) { 
    cell.resultsIcon.image = [UIImage imageNamed:@"BlackIconLock.png"]; 
} 

else{ 
    cell.resultsIcon.image = nil; 
} 

cell.resultsName.text = resultsName; 

return cell; 
} 

とHERESに、このビューコントローラ

#import <UIKit/UIKit.h> 
#import "Store.h" 
#import "flags.h" 
#import "Tribes.h" 
#import "resultsViewCell.h" 

@interface GamePlayViewController : UIViewController <UITableViewDataSource,UITableViewDelegate>{ 

NSMutableArray *questionsArray; 
NSMutableArray *answersArray; 
NSInteger gameSelected; 
NSMutableArray *revealArray; 
NSTimer *questionTimer; 
BOOL GameInProgress; 

int random; 
int questionTimerCounter; 
int loopCounter; 
int runningScore; 

} 

@property (weak, nonatomic) IBOutlet UIImageView *questionImage; 
@property (weak, nonatomic) IBOutlet UILabel *answerLabel1; 
@property (weak, nonatomic) IBOutlet UILabel *answerLabel2; 
@property (weak, nonatomic) IBOutlet UILabel *answerLabel3; 

- (IBAction)answer1:(id)sender; 
- (IBAction)answer2:(id)sender; 
- (IBAction)answer3:(id)sender; 

@property (weak, nonatomic) IBOutlet UIImageView *cover1; 
@property (weak, nonatomic) IBOutlet UIImageView *cover2; 
@property (weak, nonatomic) IBOutlet UIImageView *cover3; 
@property (weak, nonatomic) IBOutlet UIImageView *cover4; 
@property (weak, nonatomic) IBOutlet UIImageView *cover5; 
@property (weak, nonatomic) IBOutlet UIImageView *cover6; 
@property (weak, nonatomic) IBOutlet UIImageView *cover7; 
@property (weak, nonatomic) IBOutlet UIImageView *cover8; 
@property (weak, nonatomic) IBOutlet UIView *coreView; 

@property (weak, nonatomic) IBOutlet UILabel *resultsLabel; 
@property (strong, nonatomic) IBOutlet UITableView *resultsTable; 
@property (weak, nonatomic) IBOutlet UIView *resultsView; 

@end 

ための.h私はこのエラーを取得する「 'NSInvalidArgumentException'、理由によりキャッチされない例外にアプリを終了:「 - [UITableViewCellのresultsIcon]:インスタンスに送信されたセレクタが認識されない " 処理方法がわかりません。あなたが私に提供できる助けや指導のために、事前に感謝します。あなたが提供する上でのコードに基づいて、ええオハイオ州相続人resultsViewCell.h

@interface resultsViewCell : UITableViewCell 

@property (strong, nonatomic) IBOutlet UIImageView *resultsFlag; 
@property (strong, nonatomic) IBOutlet UILabel *resultsName; 
@property (strong, nonatomic) IBOutlet UIImageView *resultsIcon; 

@end 
+0

これらの 'resultsTable.delegate = self;'と 'resultsTable.dataSource = self;'は 'viewDidLoad'にあるべきだと思います。また、あなたのセルにカスタムクラスとカスタム.xibがある場合、それを登録する必要があります。どちらも真でない場合は、データをNSLogで調べて、何かが含まれているかどうかを確認してください。 – Tj3n

+0

デリゲートとデータソースをロードするときにUIViewをテーブルにロードしています。配列からのデータまではログに記録されており、実際にデータをロードする準備ができていることが表示されますが、セルロード中に何か不足していると仮定しています。 – JoeShmoe

+0

カスタムセルクラスとカスタムxibがありますか?そうでなければ、あなたのtableViewがNSLogによってnilでないことを確認してから、dataSourceとdelegateを設定してください。 – Tj3n

答えて

1

は、私はあなたがカスタムセルを使用していると仮定します。あなたは登録する必要があり、そのresultsViewCell

登録そのカスタムセル

[self.resultsTable registerNib:[UINib nibWithNibName:@"NAME_OF_YOUR_CELL_NIB" bundle:nil] forCellReuseIdentifier:@"resultsListCell"]; 

のviewDidLoad でそして私はあなたのanimateResults内方法は、あなたがのデリゲートとデータソースに自己を割り当てていることに気づいたresultsTableすべきではありません自己です。結果または_resultsTable

+0

あなたが行った提案で投稿を更新しましたが、まだ認識されていないNSInvalidArgumentException '、reason:' - [UITableViewCell resultsIcon]:インスタンスに送られた認識できないセレクタ。ああそう、私は自己を変えるだろう。 self.resultsTable.delegateに= selfを削除しますか? – JoeShmoe

+0

カスタムセル(xib)の.hファイルに結果Iconが宣言されていることを確認してください。 Nibを登録する必要があります。カスタムセルを登録する方法がうまくいくかどうかはわかりません。上記の例のようにregisterNibに変更できますか?私の答えで尋ねた結果はどうでしたか? – Glenn

+0

nibファイルを使用していませんストーリーボード – JoeShmoe

0

最初にquestionArrayを確認してください。空のオブジェクトを持つことはできません。

第2に、ストーリーボードからのセルを使用している場合は、tableviewから直接送信された場合、なぜ登録していますか?

関連する問題