在xCode 4.2中,當我將identifier
屬性設置爲故事板中的原型單元格時,在嘗試構建項目時出現錯誤Uncategorized - Compilation Failed
。設置標識符時表格視圖單元格錯誤
我不知道你需要什麼樣的所有信息,所以我把我的想法是有關...
首先,我有我設置內部表格視圖一個視圖控制器在Storyboard中。在表格視圖中,我放置了一個原型單元格。在原型單元格中,我放置了一個UIImageView和3個標籤。
我有一個稱爲DOR_SearchCustomCell
.h和.m文件的自定義單元類。這裏是.h文件:
@interface DOR_SearchCustomCell : UITableViewCell {
__weak IBOutlet UIImageView *cellImage;
__weak IBOutlet UILabel *cellTitle;
__weak IBOutlet UILabel *cellText;
__weak IBOutlet UILabel *cellDistance;
}
@property (weak, nonatomic) IBOutlet UIImageView *cellImage;
@property (weak, nonatomic) IBOutlet UILabel *cellTitle;
@property (weak, nonatomic) IBOutlet UILabel *cellText;
@property (weak, nonatomic) IBOutlet UILabel *cellDistance;
@end
與.m文件:
#import "DOR_SearchCustomCell.h"
@implementation DOR_SearchCustomCell
@synthesize cellImage;
@synthesize cellTitle;
@synthesize cellText;
@synthesize cellDistance;
- (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
}
@end
我的原型細胞有這個類集合爲它的自定義類,設置爲自定義樣式,標識設置爲specialsCell
,並且圖像和標籤綁定到類文件中的變量。
控制視圖控制器的類是DOR_SearchViewController
,帶有.h和.m文件。 .h文件是:
#import <UIKit/UIKit.h>
#import <sqlite3.h>
#import "DOR_RestaurantClass.h"
#import "DOR_SearchCustomCell.h"
@class Reachability;
@interface DOR_SearchViewController : UIViewController <UIActionSheetDelegate, NSURLProtocolClient, NSXMLParserDelegate, UITableViewDelegate, UITableViewDataSource> {
__weak IBOutlet UITableView *tblView;
NSMutableData *receivedData;
NSXMLParser* parser;
NSString *currentElement;
NSMutableString *currentElementValue;
NSMutableArray *listItems;
NSMutableArray *listOfIds;
NSMutableArray *listOfNames;
NSMutableArray *listOfDistances;
NSMutableArray *listOfImages;
NSMutableArray *listOfAddresses;
NSMutableArray *listOfAddresses2;
NSMutableArray *listOfAddresses3;
NSMutableArray *listOfDescriptions;
NSMutableArray *listOfPhones;
}
@property (weak, nonatomic) IBOutlet UITableView *tblView;
@property (nonatomic, retain) NSMutableData *receivedData;
@property (nonatomic, retain) NSXMLParser *parser;
@property (nonatomic, retain) NSString *currentElement;
@property (nonatomic, retain) NSMutableString *currentElementValue;
@property (nonatomic, retain) NSMutableArray *listItems;
@property (nonatomic, retain) NSMutableArray *listOfIds;
@property (nonatomic, retain) NSMutableArray *listOfNames;
@property (nonatomic, retain) NSMutableArray *listOfDistances;
@property (nonatomic, retain) NSMutableArray *listOfImages;
@property (nonatomic, retain) NSMutableArray *listOfAddresses;
@property (nonatomic, retain) NSMutableArray *listOfAddresses2;
@property (nonatomic, retain) NSMutableArray *listOfAddresses3;
@property (nonatomic, retain) NSMutableArray *listOfDescriptions;
@property (nonatomic, retain) NSMutableArray *listOfPhones;
- (void)get_table_data;
@end
與.m文件:
#import "DOR_SearchViewController.h"
#import "Reachability.h"
@implementation DOR_SearchViewController
@synthesize tblView;
@synthesize receivedData;
@synthesize parser;
@synthesize currentElement;
@synthesize currentElementValue;
@synthesize listItems;
@synthesize listOfIds;
@synthesize listOfNames;
@synthesize listOfDistances;
@synthesize listOfImages;
@synthesize listOfAddresses;
@synthesize listOfAddresses2;
@synthesize listOfAddresses3;
@synthesize listOfDescriptions;
@synthesize listOfPhones;
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
if (![[self loadSettings:@"view"] isEqualToString: @""]){
[sortButton setTitle:[self loadSettings:@"view"] forState: (UIControlState)UIControlStateNormal];
}
listItems = [[NSMutableArray alloc] init];
listOfIds = [[NSMutableArray alloc] init];
listOfNames = [[NSMutableArray alloc] init];
listOfDistances = [[NSMutableArray alloc] init];
listOfImages = [[NSMutableArray alloc] init];
listOfAddresses = [[NSMutableArray alloc] init];
listOfAddresses2 = [[NSMutableArray alloc] init];
listOfAddresses3 = [[NSMutableArray alloc] init];
listOfDescriptions = [[NSMutableArray alloc] init];
listOfPhones = [[NSMutableArray alloc] init];
[self get_table_data];
}
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (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)get_table_data {
NSURLRequest *theRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.url.com/"] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];
NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self];
if (theConnection) {
//NSLog (@"At connection");
receivedData = [NSMutableData data];
}
}
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
[receivedData setLength:0];
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
[receivedData appendData:data];
}
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
}
-(void)connectionDidFinishLoading:(NSURLConnection *)connection {
if(parser){
parser = nil;
}
parser = [[NSXMLParser alloc] initWithData: receivedData];
[parser setDelegate: self];
[parser setShouldResolveExternalEntities: YES];
[parser parse];
[tblView reloadData];
}
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict{
//NSLog (@"At parser");
currentElement = elementName;
if ([currentElement isEqualToString:@"restaurant_details"]) {
if ([currentElement isEqualToString:@"total_results"]) {
//NSLog(@"Element: %@", currentElement);
}else if ([currentElement isEqualToString:@"restaurant"]) {
restaurantObj = [[DOR_RestaurantClass alloc]init];
}
}
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
//NSLog (@"At parser2");
if(!currentElementValue)
currentElementValue=[[NSMutableString alloc] initWithString:string];
else
[currentElementValue appendString:string];
//NSLog(@"Name to be saved in Array :- %@",currentElement);
//NSLog(@"the parser just found this text in a tag:%@",currentElementValue);
if([currentElement isEqualToString:@"name"]) {
restaurantObj.name=[NSString stringWithFormat:@"%@",currentElementValue];
[listOfNames addObject:currentElementValue];
//NSLog(@"At Name | Array = %@", listOfNames);
}else{
[email protected]"";
}
if([currentElement isEqualToString:@"distance_from_current_location"]) {
restaurantObj.distance=[NSString stringWithFormat:@"%@",currentElementValue];
[listOfDistances addObject:string];
}else{
[email protected]"";
}
if([currentElement isEqualToString:@"restaurant_id"]) {
restaurantObj.restId=[NSString stringWithFormat:@"%@",currentElementValue];
[listOfIds addObject:string];
}else{
[email protected]"";
}
if([currentElement isEqualToString:@"address"]) {
NSArray *stringArray = [currentElementValue componentsSeparatedByString:@" | "];
restaurantObj.address=[stringArray objectAtIndex:0];
restaurantObj.address2=[stringArray objectAtIndex:1];
restaurantObj.address3=[stringArray objectAtIndex:2];
[listOfAddresses addObject:[stringArray objectAtIndex:0]];
[listOfAddresses2 addObject:[stringArray objectAtIndex:1]];
[listOfAddresses3 addObject:[stringArray objectAtIndex:2]];
}else{
[email protected]"";
[email protected]"";
[email protected]"";
}
if([currentElement isEqualToString:@"phone_number"]) {
restaurantObj.phone=[NSString stringWithFormat:@"%@",currentElementValue];
[listOfPhones addObject:string];
}else{
[email protected]"";
}
if([currentElement isEqualToString:@"description"]) {
restaurantObj.description=[NSString stringWithFormat:@"%@",currentElementValue];
[listOfDescriptions addObject:string];
}else{
[email protected]"";
}
if([currentElement isEqualToString:@"image_url"]) {
restaurantObj.image=[NSString stringWithFormat:@"%@",currentElementValue];
[listOfImages addObject:string];
}else{
[email protected]"";
}
if([currentElement isEqualToString:@"restaurant_type"]) {
//restaurantObj.Name=[NSString stringWithFormat:@"%@",currentElementValue];
}else{
//[email protected]"";
}
[email protected]"";
//NSLog (@"ID Array: %@", restaurantObj);
}
-(void)parser:(NSXMLParser*)parser didEndElement:(NSString*)elementName namespaceURI:(NSString*)namespaceURI qualifiedName:(NSString*)qualifiedName {
//NSLog(@"Current element in End Element Category:- %@",currentElement);
if([elementName isEqualToString:@"restaurant"]) {
//NSLog(@"Array: %@", restaurantObj);
//[listItems addObject:restaurantObj];
}else{
currentElementValue=nil;
}
}
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad
{
[super viewDidLoad];
}
- (void)viewDidUnload
{
[super viewDidUnload];
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
NSLog (@"Table Cells: %d",[listOfIds count]);
return [listOfIds count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellID = @"specialsCell";
DOR_SearchCustomCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID];
if (cell == nil){
cell = [[DOR_SearchCustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellID];
}
NSLog (@"Name: %@", [listOfNames objectAtIndex:indexPath.row]);
cell.cellTitle.text = [listOfNames objectAtIndex:indexPath.row];
cell.cellText.text = [listOfDescriptions objectAtIndex:indexPath.row];
cell.cellDistance.text = [listOfDistances objectAtIndex:indexPath.row];
cell.textLabel.text = [listOfNames objectAtIndex:indexPath.row];
return cell;
}
@end
如果我不把在小區標識符名稱中的故事板做的,我的項目編譯和我得到默認單元格樣式(當設置爲cell == nil
時),這就是爲什麼我在底部添加了cell.textLabel.text
部分用於測試目的。
我真的不知道爲iPhone編程太多。任何幫助將不勝感激。我發現的所有教程似乎都不適合我的項目(在視圖控制器中具有表格視圖),並且在我試圖實現它們時沒有工作。感謝所有迴應。如果您需要更多信息,請與我們聯繫。
真棒,我會改變這一點,並再次嘗試,然後讓你知道它是如何工作的。謝謝。 – James 2012-05-15 15:28:41
其實,我再次閱讀你的問題,你似乎在使用自定義單元格。在這種情況下,插座連接不應該有任何問題。無論如何,請查看構建日誌以查看實際導致此錯誤的原因。看看這個線程看看如何打開生成日誌:http://stackoverflow.com/questions/1488931/how-do-you-show-xcodes-build-log-trying-to-verify-if-iphone-distribution -buil – Guven 2012-05-15 15:59:28