سؤال

أنا استخدم http://github.com/facebook/three20. في تطبيق iPhone الخاص بي. لقد تابعت التعليمات لتضمين الإطار في مشروعي. لقد تحققت من ذلك مرتين الآن (في توصيات الأشخاص على مجموعة Google و IRC). أحصل على الخطأ التالي عندما يحاول بعض الرمز الثلاثي استخدام محدد مفهرف على Uiview:

- [ANTETHTEXTFILD ACKSTORORSELFVClass:]: محدد غير معترف به المرسل إلى مثيل 0x3A85ee0 "

يتم تشغيل هذا الاستثناء عند لمس حقل النص.

إليك Kicker بالنسبة لي، إذا لم أتعرف على مصدر بيانات إلى ttsearchtextfield لا يؤدي إلى الخطأ. لذلك، منطقيا أحسب أنه يجب أن يكون مصمم البيانات الخاصة بي.

  1. وضعت نقطة انقطاع في كل وظيفة في مصدر البيانات الخاص بي.
  2. ركض البرنامج، كما هو متوقع تم استدعاء INIT ودعا مندوبين الملحقات.
  3. استغلال حقل النص، لا توجد مكالمات إلى مصدر بيانات الخاص بي واستثناء وقت التشغيل يحدث.

أنا لاذع على هذا واحد. لم أجد مشكلات باستخدام Libs خارجي مع كتالوجات فيها من قبل. يمكنني تقديم المزيد من المعلومات حول إعداد المشروع، فقط أطلب المواصفات لأن هناك بعض المعلومات هناك.

رمز أنا أستخدم إنشاء TTSeAtchTextfield:

// setup Country
self.searchFieldCountry = [[TTSearchTextField alloc]initWithFrame:CGRectMake(156, 145, 146, 37)];
self.searchFieldCountry.borderStyle = UITextBorderStyleRoundedRect;
self.searchFieldCountry.placeholder = @"Country";
self.searchFieldCountry.autocapitalizationType = UITextAutocapitalizationTypeNone;
OLLocationSearchDataSource *ds = [[OLLocationSearchDataSource alloc]init];
self.searchFieldCountry.dataSource = ds;
[self.view addSubview:self.searchFieldCountry];
[ds release];

كود بيانات البيانات الخاصة بي:

#import "OLLocation.h"
#import "AppSession.h"

@implementation OLLocation

@synthesize locationData = _locationData;

@synthesize locationMode,country,region;

- (NSMutableArray*)delegates {
    if (!_delegates) {
        _delegates = TTCreateNonRetainingArray();
    }
    return _delegates;
}

- (BOOL)isLoadingMore {
    return NO;
}

- (BOOL)isOutdated {
    return NO;
}

- (BOOL)isLoaded {
    return !!_AllLocationData;
}

- (BOOL)isLoading {
    return NO;
}

- (BOOL)isEmpty {
    return !_AllLocationData.count;
}

- (void)load:(TTURLRequestCachePolicy)cachePolicy more:(BOOL)more {
}

- (void)invalidate:(BOOL)erase {
}

- (void)cancel {
    // cancel a search if possible
}

- (void)loadNames {
    _AllLocationData = [[AppSession getAppSession] getCountries];
}

- (void)search:(NSString*)text {
    [self cancel];

    self.locationData = [NSMutableArray array];

    if (text.length) {
        text = [text lowercaseString];
        for (NSString* name in _AllLocationData) {
            if ([[name lowercaseString] rangeOfString:text].location == 0) {
                [_locationData addObject:name];
            }
        }
    }
}

- (void)dealloc {
    [super dealloc];
}

@end

@implementation OLLocationSearchDataSource

@synthesize locations = _locations;

-(id)init {
    if (self = [super init]) {
        _locations = [[OLLocation alloc] init];
        _locations.locationMode = OLLocationModeCountry;
        self.model = _locations;
    }
    return self;
}

-(void)dealloc {
    TT_RELEASE_SAFELY(_locations);
    [super dealloc];
}

///////////////////////////////////////////////////////////////////////////////////////////////////
// TTTableViewDataSource

- (void)tableViewDidLoadModel:(UITableView*)tableView {
    self.items = [NSMutableArray array];

    for (NSString* name in _locations.locationData) {
        TTTableItem* item = [TTTableTextItem itemWithText:name URL:@"http://google.com"];
        [_items addObject:item];
    }
}

- (void)search:(NSString*)text {
    [_locations search:text];
}

- (NSString*)titleForLoading:(BOOL)reloading {
    return @"Searching...";
}

- (NSString*)titleForNoData {
    return @"No names found";
}

@end
هل كانت مفيدة؟

المحلول

لا أعتقد أنه مصدر البيانات الخاص بك. -ancestorOrSelfWithClass: هي طريقة فئة تمتد Uiview وأضاف UIViewAdditions.h. وبعد السبب في الحصول على الخطأ عند إضافة مصدر البيانات الخاص بك ربما يرسل أي رمز -ancestorOrSelfWithClass: ربما لا يتم استدعاء الرسالة إذا كان مصدر البيانات غير مخصص.

عند تجميع المكتبات الثابتة لإدراجها في تطبيقات iPhone، تحت 2.x تحتاج إلى إضافة -ObjC إلى أعلام روابط الرابط الأخرى للتأكد من ارتباط طرق الفئات بمكتبة. في 3.x، لا يبدو ذلك يعمل بشكل صحيح، وبالتالي -all_load يجب أن تضاف كذلك أيضا إلى أعلام روابط أخرى.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top