0

こんにちは私はあなたがすべてこれに答えることができると確信していますが、私は愚かであるため、私の地獄から盗聴しています.

私は配列を持っていて、didSelectRowAtIndexPath行を保存してから NSLog formatSelected を保存できます。次に、ビュー コントローラーをポップし、ボタン タイトルとして formatSelected を表示します。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    NSString *formatSelected = [[NSString alloc]init];
    formatSelected:[format objectAtIndex:indexPath.row];
    NSLog(@"this is the format selected %@",formatSelected);
    [button2 setTitle:[format objectAtIndex:indexPath.row] forState:UIControlStateNormal];
    [navigationControler popViewControllerAnimated:YES];
}

それはうまくいきます。

私の問題は、新しくタイトルが付けられたボタンである前のビューに、別のボタンとラベルがあることです。

2番目のボタンを押して、formatSelected文字列をラベルまたはNSLogに表示できるようにしたい

-(IBAction)printResults{
NSString *fmat = [[NSString alloc]initWithFormat:@"%@",formatSelected];
NSLog(@"%@",fmat);
    NSLog(@"nslong button pressed");}

しかし、NSLog は (null) を表示するだけですか?

持ってい@property (nonatomic, retain) NSString *formatSelected;て合成しました。

私は何を間違っていますか?

4

2 に答える 2

1

formatSelectedメソッド内でローカル変数として宣言していますtableView:didSelectRowAtIndexPath:。このメソッド内で割り当てたものformatSelectedはすべて、メソッドが終了するとアクセスできなくなります。選択した形式を、プロパティ (および対応するインスタンス変数) ではなく、このローカル変数に割り当てています。

ラインを完全に使用[self setFormatSelected:[format objectAtIndex:indexPath.row]];して削除します。NSString *formatSelected...

于 2012-06-28T23:40:44.267 に答える
0

ほとんどの場合copy、ではなくNSString*で使用する必要がありretainます。詳細については、この回答を参照してください。NSStringプロパティ:コピーまたは保持しますか?

于 2012-06-28T23:27:55.203 に答える