Iphone 如何在调用方法objective c之前设置NSString

Iphone 如何在调用方法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];

这可能是一个简单的问题,但我无法找出我遗漏了什么

在ViewControl.h中,我声明了UIColor

@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委托添加到颜色选择器视图控制器
  • 让你的VC在这里实现这个协议
  • 在委托方法中,设置本地属性
  • 为本地属性实现自定义设置器,并在颜色更改时更新背景颜色

  • 添加
    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背景更改为白色@特拉赫