2013-04-10 67 views
0

這可能是一個簡單的問題,但我無法弄清楚我缺少什麼。如何在調用方法目標之前設置NSString c

在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]; 
} 

現在的問題是,當我調用它返回的方法時,它返回RED,如果我再次調用它,它將返回BlackColor。

如何調用該方法並將Color更改爲新的,然後將其返回。我想直接得到黑色。

我想先執行方法然後返回顏色,但是會發生什麼是在執行方法之前分配顏色。

我希望我把問題弄清楚了。

+0

add'myColor = [UIColor RedColor];'in'changeMycolor'方法。 – 2013-04-10 16:18:15

+0

你究竟想在這裏做什麼? – bdesham 2013-04-10 16:18:18

+0

它已經添加..對不起,我想寫myColor而不是myString。 @AnoopVaidya – iMubarak 2013-04-10 16:23:10

回答

1

好的,我會採取一個重擊此。

我懷疑你正在做一些presentViewController: ...方法在你的換色方法。這很好,但它有影響。您在中調用的方法在該演示期間繼續執行。這意味着它可能會返回,等等。

這就是委託人的概念出現的地方。您可能會從這裏稍稍重構數據流。

我建議什麼(如果我對一個顏色選擇器UI的演示正確的),就是你做如下修改:

  1. 創建@protocol ColorPickerDelegate有一個方法:-(void) userChoseColor:(UIColor *) color
  2. 添加@property (weak) id<ColorPickerDelegate> delegate到你的顏色選擇器視圖控制器
  3. 讓您有個VC實現該協議
  4. 裏面的委託方法,將您的本地地產
  5. 實現當地特性的自定義設置器,並且每當顏色改變時更新背景顏色
+0

首先感謝您的解釋。正如我所說的顏色選擇器工作正常,它返回我選擇的顏色並將其分配給myColor。我的問題是changeTextViewBackGround方法首先將myColor分配給TextView背景顏色,然後執行changeMyColor ..我想先做適當的調用changeMyColor,然後分配TextView顏色@ctrahey – iMubarak 2013-04-10 17:24:30

+0

@iMubarak:我認爲您需要發佈更多的代碼,以便我們可以實際上看到你想描述的控制流程。 – drewmm 2013-04-10 17:30:41

+0

我編輯問題並添加Code @drewmm – iMubarak 2013-04-10 17:43:38