- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
の戻り値を取得し、[[[tableView cellForRowAtIndexPath:indexPath] textLabel] text]
プロパティに格納します。したがって、ユーザーが選択したセルを変更するたびに、プロパティは現在選択されているセルのテキストに更新されます。次に、ボタンのメソッドを作成して配線します。ボタンが押されたら、インターフェイスのラベルのテキスト値をプロパティに設定します。
上部のセクション(.hファイルにあります)の中@interface
に、これを置きます。
@property (nonatomic, copy) NSString* selectedCellText;
セクション内@implementation
(.m / .mmファイルにあります)にこれを配置します。
@synthesize selectedCellText = _selectedCellText;
これで、2つのメソッドを使用してアクセスできるインスタンス変数_selectedCellText
ができました。これはプロパティと呼ばれます。[self setSelectedCellText]
(「セッター」)を使用して設定し、 [self selectedCellText]
(「ゲッター」)を使用して値を取得します。または、ドット表記を使用すると、これが自動的に行われます(self.selectedCellText
常に参照してください)。もちろん、self
内部でのみ使用できます。別のオブジェクトにこのインスタンスへのポインタがある場合は、の代わりにそれを使用しますself
。
について- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
は、これを行います。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
self.selectedCellText = [[[tableView cellForRowAtIndexPath:indexPath] textLabel] text];
}
これで、いつでも(テーブルを適切に設定していれば)self.selectedCellText
、現在選択されているセルのテキストが含まれます。したがって、UILabelとUIButtonを接続し、ボタンがターゲットアクションを介してメソッドを呼び出すようにします。ペン先/ストーリーボードを使用している場合は、それらをインターフェイスにドラッグします。ctrl-アシスタントエディタでラベルからインターフェイスセクションにドラッグすると、Xcodeでアウトレットを作成するように求められます。この新しいプロパティに名前を付けましょうmyLabel
。ctrl-ボタンから実装セクションにドラッグし、ボタンがタッチされたときに呼び出されるメソッドをXcodeに作成させます。labelTextUpdate
名前を付けて、に設定arguments
しましょうnone
。Xcodeがメソッドを作成するので、このコードをその中に挿入します。
self.myLabel.text = self.selectedCellText;
完了です。ユーザーがテーブルに触れるたびに、プロパティはセルに含まれているラベルのテキストに更新されます。ユーザーがボタンに触れるlabeltextUpdate
と、呼び出され、ユーザーインターフェイスのラベルがプロパティのテキストに更新されます。これは、以前に選択したセルに含まれていたテキストになります。
もちろん、これは私が何も忘れなかったことを提供しています。なぜならこれは記憶からのものだからです。Objective-CおよびiOS/Mac OSの開発に関する本をいくつでも読んだり、Appleのドキュメントを読んだりすることをお勧めします。
私はそれをテストしました、そしてそれは働きます。結果は次のとおりです。

また、textプロパティやdelegateメソッドを使用せずに、これを行うためのより良い方法があることにも気づきましたdidSelectRowAtIndexPath
。ボタン方式では、テーブルビューにクエリを実行して、現在選択されているセルを取得し、そのラベルを要求してから、そのテキストを取得してラベルに適用します。1行か2行のコードしか必要とせず、混乱がはるかに少なくなります。