我想使用点击UITableCellView后收到的值。我将值存储到数组中,并定义了UITableCellView的ViewController实例,以便访问这些数组。即使我可以从另一个ViewController到达数组,它总是将“0”写入我希望拥有数据的文本字段。我需要存储在数组中的确切数据。以下是我尝试这样做的代码;
(fourthViewController)
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[tableView deselectRowAtIndexPath:indexPath animated:YES];
NSString *msg = [[NSString alloc] initWithFormat:
@"%@ rate for %@ has been selected",
[rates objectAtIndex:[indexPath row]],
[countries objectAtIndex:[indexPath row]]];
UIAlertView *alert =
[[UIAlertView alloc] initWithTitle:@"New country selected"
message:msg
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
[alert release];
[msg release];
fCountry = [countries objectAtIndex:indexPath.row];
fRate = [rates objectAtIndex:indexPath.row];
}
FirstViewController我正在尝试使用数组;
@interface FirstViewController : UIViewController{
@public
...
FourthViewController *fourthViewController;
}
...
@property (nonatomic, assign) FourthViewController *fourthViewController;
@synthesize fourthViewController;
提前感谢您的回答!
答案 0 :(得分:1)
让我澄清一下我做了什么以及我想做什么。
这是我在FourthViewController下创建的UItableView和UITableViewCell;
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *countryIdentifier = @"countryIdentifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:countryIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"countryIdentifier"];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
}
NSString *cellValue = [NSString stringWithFormat:@"%@, %@", [countries objectAtIndex:indexPath.row], [rates objectAtIndex:indexPath.row]];
cell.textLabel.text = cellValue;
cell.textLabel.font = [UIFont fontWithName:@"HelveticaNeue-Bold" size:16];
cell.selectionStyle = UITableViewCellSelectionStyleGray;
return cell;
}
以下是在FourthViewController中点击其中一个单元格后发生的事情;
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[tableView deselectRowAtIndexPath:indexPath animated:YES];
NSString *msg = [[NSString alloc] initWithFormat:
@"%@ rate for %@ has been selected",
[rates objectAtIndex:[indexPath row]],
[countries objectAtIndex:[indexPath row]]];
UIAlertView *alert =
[[UIAlertView alloc] initWithTitle:@"New country selected"
message:msg
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
[alert release];
[msg release];
fCountry = [countries objectAtIndex:indexPath.row];
fRate = [rates objectAtIndex:indexPath.row];
}
fCountry和fRate是我将窃听的单元格数据存储在其中的字符串。它们合成得当。我想在另一个名为FirstViewController的ViewController中的文本字段中使用存储在这两个字符串中的单元格信息。
以下是我尝试在FirstViewController中使用FourthViewController的字符串;
#import "FourthViewController.h"
@interface FirstViewController : UIViewController{
...
IBOutlet UITextField *taxRateField;
FourthViewController *fourthViewController;
}
...
@property (nonatomic, retain) IBOutlet UITextField *taxRateField;
@property (nonatomic, assign) FourthViewController *fourthViewController;
...
@end
在FourthViewController.m中;
#import "FirstViewController.h"
#import "FourthViewController.h"
@implementation FirstViewController
...
@synthesize taxRateField;
@synthesize fourthViewController;
- (void)viewWillAppear:(BOOL)animated {
...
taxRateField.text = fourthViewController.fRate;
}
我实现了所有必要的数据,并正确地建立了IBOutlets的连接,但我确信我错过了一些非常小的东西。
再次感谢你!
答案 1 :(得分:0)
为了给您一个明确的答案,我需要更多有关您的设计的信息。让我根据你的代码尝试猜测问题是什么 - “fCountry”和“fRate”是您尝试访问的属性吗?如果是这样,它们是否正确设置和合成? 你提到你正试图从UITextField获取数据 - 这是UITableViewCell的一个元素吗?如果是这样,请确保它已正确连接到IBOutlet,尽管此设计中的某些内容对我来说似乎不对。我建议插入你需要的任何数据,因为它进入NSMutableArray并从那里获取它而不是试图从单元格本身获取它(不适当的MVC)。这可以通过委派给您的“FourthViewController”轻松完成。希望这会给你一个方向。祝你好运!
答案 2 :(得分:0)
您将整个ViewController声明为属性。只需将您的数组用作属性。
通常,传递数据有很大的好处:http://www.theappcodeblog.com/2011/04/15/passing-data-between-views-tutorial-using-a-protocol-delegate-in-your-iphone-app/