3

我尝试将选定行中的值传递给视图控制器。在新视图控制器中记录返回空值。我的错误在哪里?

 2013-06-18 17:28:59.394 App[1790:c07] ID is Here: 35023

 2013-06-18 17:28:59.397 App[1790:c07] Value in Next view  (null)

2013-06-18 17:28:59.398 App[1790:c07] Label is Here <UILabel: 0x9139810; 
frame = (14 140; 255 16); clipsToBounds = YES; opaque = NO; 
autoresize = RM+BM; userInteractionEnabled = NO; layer = <CALayer: 0x915ab10>>

表视图控制器代码:

NSString *localStringValue;

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{    
    NSUInteger row = [indexPath row];
    NSString *value = [myArray objectAtIndex:row];

    DetailViewController *second=[[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil] ;

    second.PassID=value;

    [self presentModalViewController:second animated:YES];

    localStringValue = [tableView cellForRowAtIndexPath:indexPath].textLabel.text;
    NSLog(@"ID is Here: %@", value);
}

下一个查看控制器代码:

。H

@interface DetailViewController : UIViewController
{
    NSString *PassID;
}
@property (nonatomic, retain) NSString *PassID;
@property (unsafe_unretained, nonatomic) IBOutlet UILabel *label;

.m 代码

- (void)viewDidLoad
{

   label.text=PassID;
    NSLog(@"Label is Here %@",label);

    [super viewDidLoad];
}
4

3 回答 3

1
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{    
    NSUInteger row = [indexPath row];
    NSString *value = [myArray objectAtIndex:row];

    DetailViewController *second=[[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil] ;

/// second.PassID=value; ///Remove the line here


    [self presentModalViewController:second animated:YES];

    second.PassID=value; ///assign the value after presenting


    localStringValue = [tableView cellForRowAtIndexPath:indexPath].textLabel.text;
    NSLog(@"ID is Here: %@", value);
}
于 2013-06-18T17:37:30.950 回答
0

试试看NSLog(@"Label is Here %@", self.label);是否有效。

.h 文件中的NSString *label;ivar 不是必需的,因为您还声明了具有相同名称的属性。

于 2013-06-18T13:39:40.250 回答
0

在 DetailViewController.h 中进行更改

@interface DetailViewController : UIViewController 
@property (nonatomic, retain) NSString *label;

在 DetailViewController.m

-(void)setLabelText:(NSString *)label{
    if(_label!=label)
        _label = label;
}

和使用功能

[第二个 setLabelText:value];

并打印

NSLog(@"标签在这里 %@",self.label);

于 2013-06-18T13:42:48.380 回答