Chargé de la plume, mais n'a pas obtenu une UITableView
J'ai suivi ce tutoriel sur YouTube (partie 1 et partie 2).
J'ai terminé les deux vidéos et ont accroché le point de vue du contrôleur avec le parent-vue-contrôleur à l'aide de ce code:
- (IBAction)searchButtonClicked:(id)sender {
NSLog(@"It works.");
SearchViewController *searchViewControl = [self.storyboard instantiateViewControllerWithIdentifier:@"SearchControllerNav"];
[self presentViewController:searchViewControl animated:YES completion:nil];
}
Ce code fonctionne vraiment puisque c'est le même format que j'utilise pour mon autre mode de vue des contrôleurs, donc je sais que ce n'est pas le problème.
De toute façon, quand j'appuie sur le bouton de recherche dans la vue du contrôleur, il devrait sortir le SearchViewController
. Toutefois, l'application se bloque à la place, et il me donne ce message d'erreur:
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[UITableViewController loadView] loaded the "jp7-vt-IdA-view-Jer-xW-qlD" nib but didn't get a UITableView.'
J'utilise les Storyboards de cette application.
Il y a une chose que je suis absent? Je vous remercie à l'avance.
Un côté de la question: je suis également un avertissement, disant Comparison between pointer and integer ('BOOL *' (aka 'signed char *') and 'int')
chaque fois que isFiltered == YES
est indiqué. Est-il de toute façon à résoudre ce problème?
Voici le code pour SearchViewController
:
SearchController.h
#import <UIKit/UIKit.h>
@interface SearchViewController : UITableViewController <UITableViewDelegate, UITableViewDataSource, UISearchBarDelegate> {
}
- (IBAction)cancelButtonTapped:(id)sender;
@property (weak, nonatomic) IBOutlet UISearchBar *mySearchBar;
@property (weak, nonatomic) IBOutlet UITableView *myTableView;
@property (nonatomic, strong) NSMutableArray *itemsInCloudApp;
@property (nonatomic, strong) NSMutableArray *filteredList;
@property BOOL *isFiltered;
@end
SearchViewController.m
#import "SearchViewController.h"
@interface SearchViewController ()
@end
@implementation SearchViewController
@synthesize mySearchBar, myTableView, itemsInCloudApp, filteredList, isFiltered;
- (void)viewDidLoad
{
[super viewDidLoad];
//Set title.
UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectZero];
titleLabel.text = @"Search";
titleLabel.adjustsFontSizeToFitWidth = YES;
titleLabel.clipsToBounds = YES;
titleLabel.numberOfLines = 1;
titleLabel.font = [UIFont fontWithName:@"Avenir-Medium" size:18];
titleLabel.textColor = [UIColor blackColor];
titleLabel.autoresizingMask = UIViewAutoresizingFlexibleHeight;
titleLabel.textAlignment = NSTextAlignmentCenter;
[titleLabel sizeToFit];
self.navigationItem.titleView = titleLabel;
//Alloc and init list.
itemsInCloudApp = [[NSMutableArray alloc]initWithObjects:@"http://www.apple.com/", @"http://www.trijstudios.com/", @"http://www.google.com/", @"http://www.squarespace.com/", @"http://www.youtube.com/", nil];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
//Dispose of any resources that can be recreated.
}
#pragma mark - Table view data source
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
//Return the number of sections.
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
//Return the number of rows in the section.
if (isFiltered == YES) {
return [filteredList count];
} else {
return [itemsInCloudApp count];
}
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
//Configure the cell...
if (isFiltered == YES) {
cell.textLabel.text = [filteredList objectAtIndex:indexPath.row];
cell.detailTextLabel.text = [filteredList objectAtIndex:indexPath.row];;
} else {
cell.textLabel.text = [itemsInCloudApp objectAtIndex:indexPath.row];
cell.detailTextLabel.text = [itemsInCloudApp objectAtIndex:indexPath.row];
}
return cell;
}
-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText {
if (searchText.length == 0) {
//Set bollean flag
isFiltered = NO;
} else {
//Set boolean flag
isFiltered = YES;
//Alloc and init our fliteredData
filteredList = [[NSMutableArray alloc] init];
//Fast enumeration
for (NSString *name in itemsInCloudApp) {
NSRange nameRange = [name rangeOfString:searchText options:NSCaseInsensitiveSearch];
if (nameRange.location != NSNotFound) {
[filteredList addObject:name];
}
}
}
//Reload tableView
[myTableView reloadData];
}
-(void)searchBarSearchButtonClicked:(UISearchBar *)searchBar {
[mySearchBar resignFirstResponder];
}
- (IBAction)cancelButtonTapped:(id)sender {
[self dismissViewControllerAnimated:YES completion:nil];
}
@end
REMARQUE: Il y a quelques modifications que j'ai fait pour l'adapter à mes besoins.
C'était en fait le premier que je suis allé à l'avant de poser cette question, mais il n'a pas aidé.
J'ai posté une réponse ici stackoverflow.com/questions/11221802/... j'espère que cela vous aide, vous et merci de voter si elle n'. Merci!
OriginalL'auteur chrisjr | 2013-11-27
Vous devez vous connecter pour publier un commentaire.
avez-vous essayé de changer votre
@interface SearchViewController : UITableViewController
à@interface SearchViewController : UIViewController
Je soupçonne fortement que soit vous n'avez pas connecté votre UITableview que XIB ou votre classe doit être dérivé UIViewController au lieu de UITableviewController classe..
UITableViewController
même si elle a clairement uneUITableView
, mais il fonctionne. Je vous remercie pour votre aide.OriginalL'auteur Dinesh
J'ai eu une erreur similaire. J'ai été en mesure de le résoudre à l'aide de @Dinesh de la suggestion, mais je n'ai pas aimé car j'avais peur qu'il pourrait y avoir certaines conséquences inattendues.
Ce que j'ai compris, c'est que quand j'ai regardé la scène de la hiérarchie dans le storyboard, j'ai remarqué que j'avais de cette structure (désolé, je ne sais pas comment mettre en forme ce - que c'est censé être une structure en arbre):
Quand j'ai pris le point de Vue qui était assis au milieu, mon problème a disparu. Toutefois, avant de le faire, vous devez supprimer des points de vente qui pourrait exister entre la vue et la vue du contrôleur ou de l'affichage de la table. Après vous vous assurez que ces sont partis, suivez ces étapes:
Aussi, quitter la .h fichier en tant que sous-classe de
UITableView
(pasUIView
).De toute façon, qui a résolu le problème pour moi. Si quelqu'un vient sur ce, j'espère que cela aide.
OriginalL'auteur Alex
Pour vous de côté la question reclassement de l'alerte, l'alerte est parce que vous avez fait le BOOL isFiltered comme un pointeur.
OriginalL'auteur Shanti K
Pour votre premier problème, vous avez besoin de vérifier la storyboard. Je suis sûr que votre du propriétaire du fichier vue est connecté à un UIView. Pour résoudre ce problème, vous devez faire glisser UITableView et la vue doit être connecté à la UITableView.
Pour ton deuxième problème, déclarer BOOL comme
pour storyboard, utiliser la même méthode. vérifiez votre viewcontroller du panneau de connexion
OriginalL'auteur manujmv
J'ai rencontré ce lors de la construction d'un iOS7 application Universelle avec un simple, stupide erreur: j'avais bâti une partie de l'application sur iPhone uniquement, mais avait le schéma d'ensemble de l'iPad simulateur. Après l'obtention de l'erreur et de la recherche, j'ai vu mon erreur, changé le système de l'iPhone, et l'application a couru avec le bon storyboard pour le bon simulateur. Espérons que cela aide.
OriginalL'auteur DavidS4439