0

我正在尝试为 UITableViewController 上的字符串变量分配一个值,并将其推送到我的 navigationController。

UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
// now you can use cell.textLabel.text
NSMutableString *v = [[NSMutableString alloc] init];
[v setString:cell.textLabel.text];

DCAArtistViewController *dvController = [[DCAArtistViewController alloc] init];


if ([v isEqual:@"UK"]) {

    dvController.st =@"75";

}

[self.navigationController pushViewController:dvController animated:YES];

我努力了

[dvController.st setString:@"75"];

在加载的视图上,我有一个始终显示为空的 NSLog。

 NSLog(@"The st is%@",st);

我究竟做错了什么?我看到的示例显示了分配给视图控制器上的属性,例如 dvController.st =@"75";

DCAArtistViewController .h

#import <UIKit/UIKit.h>


@interface DCAArtistViewController : UITableViewController{

NSString *st;
NSMutableArray *aa;

}
@property (nonatomic, retain) NSMutableArray *listOfItemss;
@property (nonatomic, retain) NSString *st;
@property (nonatomic, retain) NSMutableArray *aa;

@end

这是 DCAArtistViewController 的开始(加载的视图)

@implementation DCAArtistViewController
@synthesize listOfItemss;
@synthesize st;
@synthesize aa;

- (id)initWithStyle:(UITableViewStyle)style
{
self = [super initWithStyle:style];
if (self) {

    aa = [[NSMutableArray alloc] init];
    NSLog(@"The st is%@",st);
    NSLog(@"The self st is%@",st);
4

2 回答 2

0

我懂了。在您的头文件中,您同时拥有:

@interface DCAArtistViewController : UITableViewController{
    NSString *st;
}

@property (nonatomic, retain) NSString *st;

这意味着从技术上讲,您要声明两个变量,在本地命名为_stand st(_st由为属性生成的 getter/setter 管理)

设置字符串时,从技术上讲,您将其设置为-st,因为您.dvController.st =@"75";. 使用 时NSLog,您正在尝试打印st.

解决方案:从你的界面中删除NSString* st,如果你也有一个属性,你就不需要它。在 中NSLog,使用NSLog(@"The st is%@",_st);NSLog(@"The st is%@",self.st);

于 2012-10-23T21:35:08.943 回答
0

问题很简单。您正在登录st您的init方法。但是在调用方法st之后才设置属性。init

于 2012-10-23T21:34:19.557 回答