从另一个UIViewController中的UiViewController更改UILabel文本

时间:2015-07-01 12:21:35

标签: ios objective-c iphone uiviewcontroller uilabel

好吧,好像我犯了一些错误,而且我现在还没有用指针和初始化来获取它......

问题在于:

我有一个UIViewController用于注册过程,名为:RegisterViewController

它在ViewDidLoad中调用一个方法:

String

此方法如下所示:

[self performSelector:@selector(activateUsernamePopover) withObject:nil afterDelay:0.1];

这将使Popover可见。这很有效。

但我还有一些TextFields,我想用不同的文字显示一个Popover。

所以我在PopoverViewController中创建了一个名为setPopoverText的方法:

- (void) activateUsernamePopover {
PopoverViewController *popcontroller = [[PopoverViewController alloc] init];

popcontroller.title = nil;

[popcontroller setPopoverText:@"Test"];

FPPopoverController *popover = [[FPPopoverController alloc] initWithViewController:popcontroller];

popover.arrowDirection = FPPopoverArrowDirectionUp;

popover.border = NO;
popover.tint = MgoGreyTint;

[popover setShadowsHidden:true];

[popover presentPopoverFromView:_usernameInput]; }

我在activateUsernamePopover方法中调用它:

- (void)setPopoverText:(NSString *)text {
[_popoverLabel setText:text];
[_popoverLabel setNeedsDisplay]; }

还有问题。

我可以将PopoverViewControllers方法setPopoverText中的文本记录下来。

但它没有改变文字。我像这样记录了_popoverLabel:

[popcontroller setPopoverText:@"Test"];

及其(null)。

我知道我正在使用的指针或PopoverViewController的实例存在一些问题,但目标c对我来说还不是很清楚。

有人给我一些答案吗?

如何更改UILabel的文本?

我也可以想象在实例化时将文本提供给控制器。

类似的东西:

NSLog(@"%@",_popoverLabel);

但我不知道怎么做。当弹出窗口可见时,我不需要更改文本。当用户点击TextField或其他地方时,它将被释放。

到目前为止,谢谢。

1 个答案:

答案 0 :(得分:1)

由于在调用init方法时尚未创建UILabel。这样做的方法是将文本保存在NSString属性中。

在PopoverViewController中,像这样创建init方法

@interface ViewController : UIViewController
- (id)initWithPopoverText:(NSString *)text;
@end

在实现文件中,保持属性和viewDidLoad中的文本,您可以将文本设置为标签。

@interface PopoverViewController ()
    @property (nonatomic) NSString *popoverText;
@end

@implement PopoverViewController
- (id)initWithPopoverText:(NSString *)text {
    self = [super init];
    if (self) {
        _popoverText = text;
    }
    return self;
}

- (void)viewDidLoad {
    [super viewDidLoad];
    //set label.text here
    self.popoverLabel.text = self.popoverText;
}
@end