[OSA2013] MLTableAlert – UIAlertViewにテーブルを組み込む

Filed under オープンソースライブラリ
Tagged as , , , ,

OSS Sampler Advent Calendar 2013
OSS Samplerに実装しているものの中からこれから12月25日まで毎日1個ずつ紹介するアドベントカレンダー「OSS Sampler アドベントカレンダー 2013」の初回に紹介するのは「MLTableAlert」です。

MLTableAlert

MatthewLabs/MLTableAlert – github
テーブルを組み込んだUIAlertViewを表示するオープンソースライブラリです。
OSS Sampler - MLTableAlert
ライセンスはMITライセンスです。

デザインの特徴

見て分かる通り、iOS 7上でもiOS 6以下のような表示になります。
そもそもMLTableAlertは、UIViewを継承しているクラスで、UIAlertViewのような実装にはなっていますが、画像を用意し、それを表示しているからです。
iOS 7用にフィットさせるためには独自の画像を用意する必要がありますが、逆にデザインを自由に変えやすい、というメリットにもなります。

表示用コード

もう一つの特徴はセルの設定をブロックで記述できることです。
OSS Samplerのデモでのコードは大体次のようになっています。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
-(IBAction)showTableAlert:(id)sender
{
  // create the alert
  self.alert = [MLTableAlert tableAlertWithTitle:@"Choose an option..."
                               cancelButtonTitle:@"Cancel"
                                    numberOfRows:^NSInteger (NSInteger section)
                {
                    // Number of Rows.
                    return [self.rowsNumField.text integerValue];
                }
                                        andCells:^UITableViewCell* (MLTableAlert *anAlert, NSIndexPath *indexPath)
                {
                  static NSString *CellIdentifier = @"CellIdentifier";
                  UITableViewCell *cell = [anAlert.table dequeueReusableCellWithIdentifier:CellIdentifier];
                  if (cell == nil)
                    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
 
                  cell.textLabel.text = [NSString stringWithFormat:@"Section %d Row %d", indexPath.section, indexPath.row];
 
                  return cell;
                }];
 
  // Setting custom alert height
  self.alert.height = 350;
 
  // configure actions to perform
  [self.alert configureSelectionBlock:^(NSIndexPath *selectedIndex){
    self.resultLabel.text = [NSString stringWithFormat:@"Selected Index\nSection: %d Row: %d", selectedIndex.section, selectedIndex.row];
  } andCompletionBlock:^{
    self.resultLabel.text = @"Cancel Button Pressed\nNo Cells Selected";
  }];
 
  // show the alert
  [self.alert show];
}

アニメーション演出

もちろんアニメーションの演出もオープンソースですので、ちょっと気に入らなければ元ソースに手を入れることも簡単です。
ソースもMLTableAlert.hとMLTableAlert.mの2つだけでとても分かりやすく、カスタマイズしやすいコードです。

badge_AppStore – OSS Sampler – iOSオープンソースライブラリ集
(今回紹介したMLTableAlertの動作も確認できます)


One Comment

  1. […] 12月1日:MLTableAlert – UIAlertViewにテーブルを組み込む […]

Post a Comment

Your email is never published nor shared. Required fields are marked *

*
*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)