如何在iPhone中为UILabel提供输入

时间:2011-12-20 12:09:15

标签: iphone objective-c xcode4.2

我有两节课。在我的第一堂课我有一个标签。现在我必须从我的第二堂课为这个标签提供输入。 这是我的代码。

 IBOutlet UILabel *label1;

@property(nonatomic, retain) IBOutlet UILabel *label1;

@synthesize label1;

我这样称呼这个标签。 我导入我的class1并创建像classone这样的对象。 我检查了(NSLog print)类,并且将调用该方法但是该输入不会来。我检查了该标签它也连接到我的类。因为我在viewDidLoad那时给出了相同的输入工作正常。

 NSString *ram= @":13123123312";
        classone.label1.text= ram;

指导我在哪里做错了。

4 个答案:

答案 0 :(得分:1)

设置先前视图的值比这更棘手。操作系统在内存压力下删除了什么视图?

设置这些值的正确方法是使用整个Cocoa框架中使用的MVC模式。您的第二个视图控制器设置上一个视图控制器的属性。当需要显示上一个视图时,它会从此属性中获取其值。

正确连接视图控制器以回放到堆栈中较低位置的另一个视图控制器的常用方法是使用委托协议。

我刚才写了一个这样的例子DelegationExample,它显示了第一个视图中的文本字段是如何使用委托协议在第二个视图控制器中填充文本字段的值的。您可能会发现看到我如何做到这一点很有用。

<强>更新

我已经使用ARC和Storyboards更新了iOS6新项目的链接

答案 1 :(得分:0)

在AppDelegate类中获取一个NSString变量并正确合成它。并将第二类变量的值存储为:

appDelegate.strLbl = [NSString stringWithformat:@"%@",strVal];

然后将该值复制到第一个类中的标签,如:

lblVal.text = [NSString stringWithformat:@"%@",appDelegate.strLbl];

希望能帮到你。感谢。

答案 2 :(得分:0)

实际上你应该在第二堂课中引用第一堂课。您不应该分配新实例。如果您创建新实例,那么您为其设置标签值的实例与您在单击时看到的实际实例不同。

我猜你有这个。

答案 3 :(得分:-1)

Aadhira是对的,当你在class2中创建一个新的class1实例时,它错了, 你必须获得class1的原始实例,这可以通过创建一个返回class1的当前实例的静态函数来实现,如下所示

static  classone*  sInstance;

@implementation classone

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization.
    }
    sInstance = self;
    return self;
}

+(classone*) getInstance {
   // NSAssert (sInstance!=nil, @"classone:getInstance: called when singleton was not initialized!");
    return sInstance;
}