3

簡単な作業のようです。(キーボードの上にある) ツールバー内のボタンは、送信者を関数に送る必要があります。以下のコードでは、デバッガーで「インスタンスに送信された認識されないセレクター」を受け取ります。

私の目標は、カスタム セルの特定の TextField にアクセスすることです。このコードは、スイッチなどを識別するのに非常にうまく機能しました

ツールバーの宣言:

UIToolbar* itemToolbar = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, 320, 50)];
itemToolbar.barStyle = UIBarStyleBlackTranslucent;
itemToolbar.items = [NSArray arrayWithObjects:
                     [[UIBarButtonItem alloc]initWithTitle:@"Cancel" style:UIBarButtonItemStyleBordered target:self action:@selector(cancelNumberPad)],
                     [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil],
                     [[UIBarButtonItem alloc]initWithTitle:@"Save" style:UIBarButtonItemStyleDone target:self action:@selector(doneWithNumberPad)],
                     nil];
[itemToolbar sizeToFit];

doneWithNumberPad の機能:

- (void)doneWithNumberPad:(id)sender {
    CGPoint buttonPosition = [sender convertPoint:CGPointZero toView:self.tableView];
    NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:buttonPosition];
    NSManagedObject *object = [self.fetchedResultsController objectAtIndexPath:indexPath];
    NSLog(@"%@", [object valueForKey:@"item"]);
}

助けてくれてありがとう

4

1 に答える 1

5

保存ボタンのセレクターメソッドにコロンを含めるだけです

itemToolbar.items = [NSArray arrayWithObjects:
                     [[UIBarButtonItem alloc]initWithTitle:@"Cancel" style:UIBarButtonItemStyleBordered target:self action:@selector(cancelNumberPad)],
                     [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil],
                     [[UIBarButtonItem alloc]initWithTitle:@"Save" style:UIBarButtonItemStyleDone target:self action:@selector(doneWithNumberPad:)],
                     nil];

senderは の型を持っています。ポイントを変換NSObjectするUIBarButtonItem前に に変換します。

- (void)doneWithNumberPad:(id)sender {
    UIBarButtonItem *button = (UIBarButtonItem *)sender;
    CGPoint buttonPosition = [button convertPoint:CGPointZero toView:self.tableView];
    NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:buttonPosition];
    NSManagedObject *object = [self.fetchedResultsController objectAtIndexPath:indexPath];
    NSLog(@"%@", [object valueForKey:@"item"]);
}
于 2013-06-15T13:23:40.113 に答える