Iphone 如何在调用方法objective c之前设置NSString
这可能是一个简单的问题,但我无法找出我遗漏了什么 在ViewControl.h中,我声明了UIColorIphone 如何在调用方法objective c之前设置NSString,iphone,ios,objective-c,xcode,Iphone,Ios,Objective C,Xcode,这可能是一个简单的问题,但我无法找出我遗漏了什么 在ViewControl.h中,我声明了UIColor @property (nonatomic, strong) UIColor * myColor; 在ViewControl.m中,我有一个方法可以执行某些操作并返回新的UIColor @synthesize myColor = _myColor; 在ViewDidLoad方法中 - (void)viewDidLoad { myColor = [UIColor RedColor];
@property (nonatomic, strong) UIColor * myColor;
在ViewControl.m中,我有一个方法可以执行某些操作并返回新的UIColor
@synthesize myColor = _myColor;
在ViewDidLoad方法中
- (void)viewDidLoad
{
myColor = [UIColor RedColor];
}
-(void) ShowColorPopUpView
{
if (!self.wePopoverController)
{
ColorViewController *contentViewController = [[ColorViewController alloc] init];
contentViewController.delegate = self;
self.wePopoverController = [[WEPopoverController alloc] initWithContentViewController:contentViewController];
self.wePopoverController.delegate = self;
self.wePopoverController.passthroughViews = [NSArray arrayWithObject:self.navigationController.navigationBar];
[self.wePopoverController presentPopoverFromRect:self.tvTweetDetails.frame
inView:self.view
permittedArrowDirections:(UIPopoverArrowDirectionUp|UIPopoverArrowDirectionDown)
animated:YES];
} else
{
[self.wePopoverController dismissPopoverAnimated:YES];
self.wePopoverController = nil;
}
}
-(void) colorPopoverControllerDidSelectColor:(NSString *)hexColor
{
_myColor = [GzColors colorFromHex:hexColor];
[self.view setNeedsDisplay];
[self.wePopoverController dismissPopoverAnimated:YES];
self.wePopoverController = nil;
}
- (UIColor *) returnColor
{
return _myColor;
}
我的问题从这里开始:我有两种方法来更改textview字体和背景色
- (IBAction)btnFontColorPopUpMenu:(id)sender
{
[self ShowColorPopUpView];
tvTweetDetails.textColor = [self returnColor];
}
- (IBAction)btnTextViewBackGroundColor:(id)sender
{
[self ShowColorPopUpView];
tvTweetDetails.backgroundColor = [self returnColor];
}
现在的问题是,当我调用该方法时,它返回红色,如果我再次调用它,它返回黑色
如何调用该方法并将颜色更改为新颜色,然后返回它。我想直接得到黑色
我想先执行该方法,然后返回颜色,但实际情况是在执行该方法之前分配颜色
我希望我能把问题说清楚。好吧,我来试试这个 我怀疑您正在做某种类型的
演示视图控制器:
。。。方法在您的颜色变换器方法中。这很好,但也有影响。在中调用的方法将在演示期间继续执行。这意味着它可能会回来,等等
这就是代表概念的由来。您可能会从这里重新构造数据流中获益
我建议(如果我对颜色选择器UI的表示正确的话)进行以下更改:
@protocol ColorPickerDelegate
:-(void)userChoseColor:(UIColor*)color
@属性(弱)id委托添加到颜色选择器视图控制器
添加
myColor=[UIColor RedColor]
在changeMycolor
方法中。您到底想在这里做什么?它已经添加了。。对不起,我想写myColor而不是myString@AnoopVaidya@bdesham这个changeMyColor实际上是一个返回颜色的颜色选择器方法。因此,每当我想要更改TextView背景或文本颜色时,我都会调用此方法。问题是,当我调用它时,它返回以前选择的颜色。我认为您应该显示您是如何使用该方法更改颜色的。首先感谢您的解释。正如我所说,颜色选择器工作正常,它返回我选择的颜色并将其分配给myColor。我的问题是changeTextViewBackGround方法首先将myColor指定给TextView背景色,然后执行changeMyColor。。我想先执行相应的调用changeMyColor,然后分配TextView颜色@ctrahey@iMubarak:我认为您需要发布更多代码,以便我们能够实际看到您试图描述的控制流。根据您的更新:使用您的属性self.myColor
设置新颜色,然后实现一个自定义设置器并更改背景颜色(在我的回答中为#5)。我有一个自定义设置器,它完美地分配了新的颜色。问题是当我调用btnTextViewBackGroundColor方法时,让我们假设我选择白色。它将其分配给myColor,但不会更改TextView的颜色。因此,当我再次调用它并选择其他颜色(如黑色)时,它会将其指定给myColor,并将TextView背景更改为白色@特拉赫