3

カスタムUITableViewCell内でボタンクリックを適切に処理できないようです。ラベルとボタンを含むセルです。私は次のコードを持っています:

var cell = tableView.DequeueReusableCell (cellKey) as ApptHistoryCell;
if (cell == null)
{
    cell = _container.Cell;
    cell.SelectionStyle = UITableViewCellSelectionStyle.None;
}

if (InfoClicked != null)
{
    cell.ActionButton.TouchUpInside += InfoClicked;
}

InfoClickedは、セル作成時にループで渡されるイベントハンドラーです。セルが再利用されると、TouchUpInsideが2つのハンドラーを呼び出そうとしているため、null参照例外が発生します。古いものと新しいもの、これはクラッシュを引き起こします。ブロックの場合、セル== null内にイベントハンドラーを配置すると、間違ったアクションが表示されます。

クリックを適切に処理するにはどうすればよいですか?

ありがとう!

4

3 に答える 3

5

カスタムセル内のボタンを処理する方法:

  • カスタムセル内のUIButtonイベントに接続するIBActionを定義します
  • ボタンアクションを処理するセルのデリゲートとデリゲートメソッドを定義します
  • IBActionはそのデリゲートメソッドを呼び出します
  • cellAtRowでセルを定義するとき...tableViewControllerをデリゲートに設定します。cell.delegate = self;
  • tableViewControllerのデリゲートメソッド内で実行したいアクションを実行します

意味がありますか?

于 2012-11-26T07:43:00.547 に答える
0

セルは、既にボタンを所有者のターゲット(View Controller)に接続しているxibファイルから作成する必要があります。

于 2012-11-26T07:41:36.587 に答える
-3

カスタムセルで、ボタンをIBに配置し、プロパティに接続します。

さて、のコントローラーでcellForRowAtIndexPath、必要なものは、そのボタンにタグを付けるだけです。

(MyCustomCell*)cell.myButton = indexPath.row;

次に、クリックイベントを次のように設定します。-

[(MyCustomCell*)cell.myButton addTarget:self action:@selector(NeedFunctionToCall:) forControlEvents:UIControlEventTouchUpInside];

次に、同じView Controllerで、次のような必要なメソッドを実装します。

-(void)NeedFunctionToCall:(id)sender
{
 NSLog("Got the event :-> %d, from the cell/button",[sender tag]);
}
于 2012-11-26T08:45:54.863 に答える