SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

japan.internet.com翻訳記事

iPhoneプログラミング: Table Viewを使ってデータを表示する

Table Viewの行にテキスト、イメージ、ディスクロージャボタンを表示

ディスクロージャボタンの表示

 オプションで、図15に示す詳細ディスクロージャボタンなどの追加ボタンをTable Viewの行に表示することもできます。

図15 詳細ディスクロージャボタン:このTable Viewの各行には詳細ディスクロージャボタンが表示されている
図15 詳細ディスクロージャボタン:このTable Viewの各行には詳細ディスクロージャボタンが表示されている

 ディスクロージャボタンを表示するには、tableView:cellForRowAtIndexPath:メソッドでUITableViewオブジェクトのaccessoryTypeプロパティを設定する必要があります。このメソッドに次のコードを追加します。

- (UITableViewCell *)tableView:(UITableView *)tableView 
cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"Cell";
    
    //...
    UIImage *image = [[UIImage imageNamed:@"USA.jpeg"] 
       _imageScaledToSize:CGSizeMake(30.0f, 32.0f)
       interpolationQuality:1];
    cell.imageView.image = image;
    
    cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;
        
    return cell;
}

 詳細ディスクロージャボタンには2つのクリック可能領域があります。行と、ボタン自体です。ユーザーが行をクリックしたときは、前の例と同様にtableView:didSelectRowAtIndexPath:メソッドがトリガされます。しかし、詳細ディスクロージャボタンをクリックしたときは、代わりにtableView:accessoryButtonTappedForRowWithIndexPath:メソッドがトリガされます。従って、tableView:didSelectRowAtIndexPath:メソッドを次のように変更する必要があります。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:
(NSIndexPath *)indexPath {
    NSString *stateSelected = [listOfStates objectAtIndex:
      [indexPath row]];
    NSString *msg = [[NSString alloc] initWithFormat:
      @"You have selected %@", stateSelected];
                    
    UIAlertView *alert = [[UIAlertView alloc] 
       initWithTitle:@"State selected" 
       message:msg 
       delegate:self 
       cancelButtonTitle: @"OK" 
       otherButtonTitles:nil];    
    [alert show];     
    [alert release];
    
    [msg release];    
}

 また、次のようにtableView:accessoryButtonTappedForRowWithIndexPath:メソッドを実装する必要があります。

- (void)tableView:(UITableView *)tableView 
accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath {
    NSString *stateSelected = [listOfStates objectAtIndex:
      [indexPath row]];
    NSString *msg = [[NSString alloc] initWithFormat:
      @"You have selected %@", 
    stateSelected];
    
    //---Navigate to the details view---
    if (self.detailsViewController == nil)
    {        
        DetailsViewController *d = [[DetailsViewController alloc] 
            initWithNibName:@"DetailsViewController" 
            bundle:[NSBundle mainBundle]];
        
        self.detailsViewController = d;
        [d release];
    }    
    
    //---set the state selected in the method of the 
    // DetailsViewController---//
    [self.detailsViewController initWithTextSelected:msg];
    [self.navigationController 
       pushViewController:self.detailsViewController 
    animated:YES];
    
    [msg release];    
}

 command+Rキーを押してアプリケーションをテストします。今度は、Table Viewの行をクリックするとアラートビューが表示され、詳細ディスクロージャボタンをクリックすると他方のビューウィンドウに移動します。

 この記事では、iPhone SDKでTable Viewを作成し、項目を追加し、イベントを処理するための基本的な操作を学んできました。Table Viewは非常に用途の広いビューのため、その仕組みをよく理解することが重要です。このiPhone開発シリーズの次の記事では、さらにTable Viewでのテクニックをいくつか紹介します。

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
japan.internet.com翻訳記事連載記事一覧

もっと読む

この記事の著者

japan.internet.com(ジャパンインターネットコム)

japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.comEarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

Wei-Meng Lee(Wei-Meng Lee)

Microsoft MVP受賞者。Microsoft社の最新テクノロジー実地研修を専門とするDeveloper Learning Solutions社を創設。.NETとワイヤレステクノロジーの開発者、指導者として知られる。国際的なカンファレンスでたびたび講演し、.NET、XML、ワイヤレステクノロジーに関す...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/4690 2010/04/19 19:08

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー