2

この非常に単純なことを理解できないようです。2 つのボタンを持つ UIViewController を取得しました。各ボタンは異なる UITableViewController にリンクしています。UITableViewController のセルをクリックすると、セルの入力が押されたボタンに表示されます。入力は配列から取得されます。

私のコードの一部:

MainView.m:

- (void)tableViewController:(TableViewController1 *)tableViewController didSelectRow (NSInteger)rowIndex 
{
NSLog(@"Selected row number: %d",rowIndex);   
}

TableView1.m:

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

[self.delegate tableViewController:self didSelectRow:indexPath.row];
[self.navigationController popViewControllerAnimated:YES];
}

次のようなメソッドで定義されたボタンのタイトルを取得しました。

MainView.m :

- (void)viewDidLoad
{

[self.industry setTitle:self.industryText forState:UIControlStateNormal];
[self.education setTitle:self.educationText forState:UIControlStateNormal];
[super viewDidLoad];
}

産業と教育はボタンそのものです。IndustryText と EducationText は、名前のプレースホルダーです。

4

3 に答える 3

2

2 つのボタンがある MainView に、次のコードを追加します。

MainViewController.h

- (void)selectedFirstButtonText:(NSString *)strText;

MainViewController.m

最初のボタン タッチ イベントで、次のコードを追加します。

- (IBAction)btnFirstTouch:(id)sender {
    FirstTableViewController *firstVC = [[FirstTableViewController alloc] init];
    firstVC.delegate = self;
    [self presentViewController:firstVC animated:YES completion:nil];
}

次にデリゲート メソッドを実装します。

- (void)selectedFirstButtonText:(NSString *)strText {
    [self.btnFirst setTitle:strText forState:UIControlStateNormal];
} 

FirstTableViewController.h

#import <UIKit/UIKit.h>
#import "MainViewController.h"

@class MainViewController;

@interface FirstTableViewController : UITableViewController <UITableViewDataSource, UITableViewDataSource> 
@property(nonatomic, assign) MainViewController *delegate;


@end

今あなたのFirstTableViewController.mに

@synthesize delegate = _delegate;

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

    UITableViewCell *cell = (UITableViewCell *)[tableView cellForRowAtIndexPath:indexPath];

    if([self.delegate respondsToSelector:@selector(selectedFirstButtonText:)]) {
        [self.delegate selectedFirstButtonText:cell.textLabel.text];
        NSLog(@"Selected Text");
    }

    [self dismissViewControllerAnimated:YES completion:nil];
 }

サンプル プロジェクトの Dropbox リンク

于 2013-05-20T20:06:40.560 に答える
0

親クラスの参照を 2 つの UITableViewControllers に渡します。したがって、TableView1.h ファイルには MainView 型のプロパティが含まれます。

TableView1.h

@interface TableView1 : UITableViewController {
}
@property (nonatomic, strong) MainView *parent;

次に、TableView1 クラスをインスタンス化するときに、参照を渡します

MainView.m

TableView1 *tableView = [[UITableViewController alloc]init];
tableView.parent = self;

最後に、デリゲート メソッドで、親参照を使用してボタンのテキストを設定します。

TableView1.m

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

[self.delegate tableViewController:self didSelectRow:indexPath.row];
[self.parent.education setTitle:@"Title" forState:UIControlStateNormal];
[self.navigationController popViewControllerAnimated:YES];
}
于 2013-05-20T20:01:07.760 に答える