0

さて、ここ数日頭を悩ませていたのはこれです。テーブル ビューのカスタム セルを作成しました。このセル用に別のクラス (customCell.h) を作成し、それらを Xcode でリンクしました。カスタム セルには、カスタム セルの .h ファイルで宣言し、ストーリーボードを介してカスタム セルにリンクした 4 つの UIlabels があります。

customCell.h ヘッダー ファイルをテーブル ビュー コントローラーの .h ファイルにインポートしました。

Twitter で検索を行い、テーブル ビューとカスタム セルにさまざまなツイートの詳細を入力しようとしています。問題は、ツイートの結果をカスタム セルの 4 つの UIlabel アウトレットにリンクする方法がわからないことです。

テーブル ビュー実装ファイルでカスタム セルのアウトレットの一部を宣言すると (カスタム セルの .h ファイルをインポートしたにもかかわらず)、xcode は名前を認識しないと言っています。

できる限り、以下の詳細なコーディングをコピーしました。どんな助けでも大歓迎です。前もって感謝します

- (void)fetchTweets
{
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        NSData* data = [NSData dataWithContentsOfURL:
                        [NSURL URLWithString: @"THIS IS WHERE MY TWITTER SEARCH STRING WILL GO.json"]];

        NSError* error;

        tweets = [NSJSONSerialization JSONObjectWithData:data
                                                 options:kNilOptions
                                                   error:&error];

        dispatch_async(dispatch_get_main_queue(), ^{
            [self.tableView reloadData];
        });
    });
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return tweets.count;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"TweetCell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

    NSDictionary *tweet = [tweets objectAtIndex:indexPath.row];
    NSString *text = [tweet objectForKey:@"text"];
    NSString *name = [[tweet objectForKey:@"user"] objectForKey:@"name"];
    NSArray *arrayForCustomcell = [tweet componentsSeparatedByString:@":"];

    cell.textLabel.text = text;
    cell.detailTextLabel.text = [NSString stringWithFormat:@"by %@", name];



    return cell;
}
4

1 に答える 1

1

テーブルビュー セルのデフォルト クラスである UITableViewCell のインスタンスを作成しています。あなたの場合、customCell クラス (UITableViewCell クラスを拡張する) のインスタンスを作成する必要があります。cellForRowAtIndexPath メソッドでこれを行う必要があります。

static NSString *CellIdentifier = @"TweetCell";

customCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if ( cell == nil )
{
    cell = [[customCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}

// Get the tweet
NSDictionary *tweet = [tweets objectAtIndex:indexPath.row];

これがお役に立てば幸いです。

シュテファン。

于 2012-05-24T06:41:49.017 に答える