我有ViewController和TableViewController。在ViewController中我有2个按钮和2个文本字段,当点击button1时,它将导航到UITableView,静态数据如(Apple,Samsung,Blackberry,Windows),点击button2将导航到UITableView静态数据(Doctor,Engineer,商人,员工)当我选择任何一行时,它应该显示在button1的textfield1中,单击button2的textField2并单击ViewController。以下是我在学习时所尝试的,我不知道它是否正确。
CustomerVC.h
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
- (IBAction)button1Click:(id)sender;
@property (strong, nonatomic) IBOutlet UITextField *txtField1;
- (IBAction)button2Click:(id)sender;
@property (strong, nonatomic) IBOutlet UITextField *txtField2;
CustomerTableVC.h
#import <UIKit/UIKit.h>
@interface DetailsViewController : UITableViewController
@end
CustomerTableVC.m
#import "DetailsViewController.h"
@interface DetailsViewController ()
{
NSArray *array1,*array2;
}
@end
@implementation FamilyDetailsViewController
- (void)viewDidLoad {
[super viewDidLoad];
array1=[[NSArray alloc]initWithObjects:@"Apple",@"Samsung",@"Blackberry",@"Windows", nil];
array2=[[NSArray alloc]initWithObjects:@"Doctor",@"Engineer",@"Businessman",@"Employee", nil];
}
#pragma mark - Table view data source
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [array1 count];
return [array2 count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
cell.textLabel.text=[arrqy1 objectAtIndex:indexPath.row];
cell.textLabel.text=[arrqy2 objectAtIndex:indexPath.row];
return cell;
}
#pragma mark - Table view delegate
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[self.navigationController popViewControllerAnimated:YES];
}
答案 0 :(得分:1)
您应该使用Unwind segue从tableview控制器传回数据..
要遵循的步骤:
假设A&amp; B是两个控制器,您首先使用一些数据从A导航到B.现在你想用一些数据从B到A进行POP。
Unwind Segues是最好的推荐方式。 以下是步骤。
定义以下方法
@IBAction func unwindSegueFromBtoA(segue: UIStoryNoardSegue) {
}
打开故事板
选择B ViewController并单击ViewController outlet。按下控制键并拖动到“退出”键。插座,让鼠标留在这里。在下图中,所选图标为ViewController插座,最后一个带退出标志的图标为Exit Outlet。
您将看到“unwindSegueFromBtoA&#39;弹出窗口中的方法。选择此方法。
现在,您将在左侧的视图控制器层次结构中看到一个segue。您将在下面的图片中看到您在StoryBoard Entry Piont附近创建的segue。
选择此项并为其设置标识符。 (建议设置与方法相同的名称 - unwindSegueFromBtoA)
开放B.m.现在,无论您想要弹出哪个A.使用
self.performSegueWithIdentifier("unwindSegueFromBtoA", sender: dataToSend)
现在,当您弹出&#39; A&#39;,&#39; unwindSegueFromBtoA&#39;方法将被调用。在&#39; A&#39;的unwindSegueFromBtoA中您可以访问&#39; B&#39;
那就是......!
答案 1 :(得分:0)
尝试使用委托。
1.在Tableview
控制器上声明代表。
在自定义视频
中FamilyViewController.delegate = self;
self.view presentviewcontroller = familyviewController;
detailsselected()
)detailsSelected
dismissViewController
内。 在FailyDetailsViewController
:
didselectRowAtIndexPath :
内拨打&#34; detailsSelected
&#34;功能并传递选定的值。