X-Code,TableView、ストーリーボードのエラーの対処 unrecognized selector sent to instance

X-Code,TableView、ストーリーボードのエラーの対処 unrecognized selector sent to instance
(1)storyboard error
Prototype table cells must have reuse identifiers
identifiersの設定で、TableViewCell項目の中のIdentifierを”Cell”にします。
間違って、他のIdentifierのほうに、Cellとしていました。
ポイントは、TableViewCell項目
画像
テーブルビュー1

テーブルビュー2

(2)indexPathに対応するCellのUIが取得できないエラー

reason: ‘unable to dequeue a cell with identifier Cell – must register a nib or a class for the identifier or connect a prototype cell in a storyboard’

とりあえず次のようにしてみた。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    //UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
    //change
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
  
    //add
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }
     
    // Configure the cell...
    cell.textLabel.text=[testArray objectAtIndex:indexPath.row];
    
    return cell;
}

(3)ナビゲーションコントローラーを使った画面遷移かそうでないかで、記載が代わる
‘NSInvalidArgumentException’, reason: ‘-[QuestionViewController viewControllers]: unrecognized selector sent to instance 0x856c6c0’

・A-Bへはナビ−ゲーションコントローラーを使い、BーCはナビゲーションコントローラーを使わない。
その場合、UINavigationControllerを使う。

			UINavigationController *navCon=segue.destinationViewController;
            ResultViewController *rv=[navCon.viewControllers objectAtIndex:0];
            rv.youSelectNumber=[NSNumber numberWithInt:iselectAnswer];
   

使わないときは、

			ResultViewController *rv=segue.destinationViewController;
            rv.youSelectNumber=[NSNumber numberWithInt:iselectAnswer];

(4)テーブルビューのリストを削除したらエラーが出ました。
reason: ‘Invalid update: invalid number of rows in section 0.
The number of rows contained in an existing section after the update (3) must be equal to the number of rows contained in that section before the update (3), plus or minus the number of rows inserted or deleted from that section (0 inserted, 1 deleted) and plus or minus the number of rows moved into or out of that section (0 moved in, 0 moved out).’

改善策は、
– (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath

 //cp paste
        NSFetchRequest *fetchRequest=[NSFetchRequest fetchRequestWithEntityName:@"TLTaskList"];
        fetchRequest.sortDescriptors=[NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"created" ascending:YES]];
        NSError *error=nil;
        //NSArray type
        self.lists=[self.managedObjectContext executeFetchRequest:fetchRequest error:&error];
         [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];

deleteRowsAtIndexPathsの前に追加しました。

(5)
reason: ‘+entityForName: nil is not a legal NSManagedObjectContext parameter searching for entity name ‘TLTask”

TLTaskがありませんというエラーらしい。実際見るとちゃんとある。
実は、
@property(nonatomic,readonly)NSManagedObjectContext *managedObjectContext;
の*managedObjectContext;を
*manageObjectContext;
とスペルミスを修正したら、強制終了はなくなりました。
コンパイルではOKなのに変なエラーでした。

関連記事

「スポンサーリンク」


ツイートツイート
カテゴリー: iPhoneアイフォンアプリ開発 パーマリンク