0

を使用しUITableViewControllerていますが、 の下にカスタム ツールバーを追加したいと考えていUIViewます。

(下のコード) のツールバーを有効にしようとしましたが、navigationController正しく動作しないようです。UITextFieldデリゲートは呼び出されず、テキスト フィールドのキー押下はテキスト フィールド自体には表示されません。

このようなツールバーを使用することは私の最初の選択肢ではありません.UITableViewControllerの下にカスタムビューを配置して、UIToolbarのように機能するアイテムを配置したいと考えています. (UIView フッターのまま)

コード:

    self.navigationController.toolbarHidden = NO;
    // create toolbar objects
    UITextField *inputField = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 230, 31)];
    inputField.backgroundColor = [UIColor clearColor];
    inputField.borderStyle = UITextBorderStyleRoundedRect;
    inputField.inputAccessoryView = self.navigationController.toolbar;
    inputField.returnKeyType = UIReturnKeyDone;
    inputField.delegate = self;


    UIButton *sendButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 50, 30)];
    sendButton.titleLabel.text = @"Send";
    sendButton.backgroundColor = [UIColor greenColor];

    // add objects into navigation controller
    self.toolbarItems = [NSArray arrayWithObjects:
                         [[UIBarButtonItem alloc] initWithCustomView:inputField],
                         [[UIBarButtonItem alloc] initWithCustomView:sendButton], nil];
4

1 に答える 1

5

実装をサブクラス化する代わりに、プレーンをサブクラス化し、それに を追加するUITableViewController方が簡単な場合があります。これにより、レイアウトをカスタマイズする際の柔軟性が向上します。UIViewControllerUITableView

基本的に手順は次のようになります。

  1. クラスに UIViewController を継承させる (UITableViewController の代わりに)
  2. クラスに UITableViewDelegate および UITableViewDataSource プロトコルを実装させる
  3. クラスに UITableViewDelegate および UITableViewDataSource メソッドを実装します (例: cellForRowAtIndexPath:、didSelectRowAtIndexPath: など)。
  4. IB で、View Controller のビューにサブビューとして UITableView を追加します。
  5. 追加したばかりのテーブル ビューのデリゲート プロパティとデータソース プロパティをビュー コントローラー クラスに設定します。
  6. UITableView のフレームのサイズを変更して、inputField とボタンの下部にスペースを確保します

このようにして、inputField とボタンを viewController のビュー (一番下) に追加できます。それらは tableview とは別であるため、スクロールしません。

于 2012-09-24T19:55:51.993 に答える