0

MessageTableViewCell accessoriesType =UITableViewCellAccessoryDe​​tailDisclosureButtonを設定 し、「矢印ボタン」自体にタブを付けると、 didSelectRowAtIndexPath:で宣言されているポップ メニューが表示されないことに気付きました。「矢印ボタン」自体を除いて、セルの他の領域にタブを付けると正常に動作します。

ただし、代わりにUITableViewCellAccessoryDisclosureIndicatorセル アクセサリ タイプを使用すると、矢印自体にタブを付けても問題なく動作します。

これは正常な動作なのか、バグなのか、それとも何か間違ったことをしたのだろうか。

UITableViewCellAccessoryDe​​tailDisclosureButtonを好むのは、私の意見では、ユーザーの注意を引きたいときの方が明確だからです。

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

        MessageTableViewCell* cell = (MessageTableViewCell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
        if (cell == nil)
        {
            cell = /*[*/[[MessageTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] /*autorelease]*/;

        }
        CastNearAppDelegate *appDelegate = (CastNearAppDelegate *)[[UIApplication sharedApplication] delegate];


        Message* message = [appDelegate.dataModel messageWithID: indexPath.row];

        if (!message.isSentByUser)
        {
            cell.accessoryType =/*UITableViewCellAccessoryDetailDisclosureButton; */UITableViewCellAccessoryDisclosureIndicator;
        }else
        {
            cell.accessoryType = UITableViewCellAccessoryNone;
        }

        message.bubbleSize = [SpeechBubbleView sizeForText:message.text];

        [cell setMessage:message];

        return cell;
    }

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {




       UIActionSheet  *popupQueryOptions = [[UIActionSheet alloc]
                                          initWithTitle:@"Options for Blocking and Spam Reporting"
                                          delegate:self
                                          cancelButtonTitle:@"Cancel"
                                          destructiveButtonTitle:@"Block Sender"
                                          otherButtonTitles:/*@"Block Sender",*/
                                          @"Inappropriate Content",
                                          /*@"Tell a Friend via Facebook",
                                           @"Tell a Friend via Twitter",*/
                                          nil];

        popupQueryOptions.actionSheetStyle = UIActionSheetStyleBlackOpaque;

        [popupQueryOptions showInView:[UIApplication sharedApplication].keyWindow];


}
4

2 に答える 2

2

それらはさまざまなものに使用されます。インジケーターは単なるインジケーターですが、ボタンはボタンのように動作するなど、別のアクションを実行できます。

UITableViewセルがタップされたときにデリゲートで呼び出すことができるメソッドが 2 つあります。

行自体がタップされると、以下が呼び出されます

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

アクセサリをタップすると、tableView が呼び出されます

- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath

これらを Interface Builder で個別に接続することもできます。したがって、この動作は非常に意図的です。

于 2013-02-11T14:57:09.403 に答える
1

開示ボタンを使用するtableView:accessoryButtonTappedForRowWithIndexPath:と、代わりにデリゲート メソッドが呼び出されtableView:didSelectRowAtIndexPath:ます。

開示ボタンは通常、セルの何らかの二次的なアクションに使用されます。たとえば、Wifi 設定では、ネットワークのオプションが表示され、セル全体をタップするとネットワークに接続されます。

于 2013-02-11T14:58:24.297 に答える