好吧,好像我犯了一些错误,而且我现在还没有用指针和初始化来获取它......
问题在于:
我有一个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或其他地方时,它将被释放。
到目前为止,谢谢。
答案 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