2014-01-18 89 views
0

CONFIGURATION內從一個UIView一個賽格瑞:使用協議來觸發一個UIViewController

- UIviewController嵌入Navigationcontroller。 - UIviewController具有UIscrollview作爲子視圖 - UIscrollview具有在其中創建圖表一些視圖:含有圖表每個視圖有其自己的h和m文件和從該文件欲觸發SEGUE到的tableview控制器。 -A Tableviewcontroller在xcode中加入和從UIviewControllerTableViewcontroller一個SEGUE被創建以及(Xcode

-created在UIView的協議有SEGUE從那裏推開。

問題:

代表總是零,賽格瑞方法永遠不會被調用

UIView的.h文件中

@protocol UItoUIvcDelegate <NSObject> 

-(void)triggerSegue; 


@end 

@interface CFfirstGraph : UIView <CPTPlotDataSource , CPTPieChartDelegate,UIActionSheetDelegate> 

@property(weak, nonatomic) id <UItoUIvcDelegate> delegate; 


@end 

的UIView .m文件(片段)

-(void)pieChart:(CPTPieChart *)pieChart sliceWasSelectedAtRecordIndex:(NSUInteger)index 
{ 

    if (self.delegate == nil) 
    { 
     NSLog(@"nil"); 
    } 
    [self.delegate triggerSegue]; 
} 

的UIViewController .h文件

#import "CFfirstGraph.h" 

@interface CFMainViewController : UIViewController <UItoUIvcDelegate, UITableViewDelegate, UITableViewDataSource> 


@end 

的UIViewController .m文件(片段)

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    self.scrollView.contentSize = CGSizeMake(320, 1000); 
    [self.view addSubview:self.scrollView]; 
    CFfirstGraph *click =[[CFfirstGraph alloc]init]; 
    click.delegate = self ; 

} 


-(void)triggerSegue 

{ 
    [self performSegueWithIdentifier:@"detailedData" sender:self]; 
    NSLog(@"estoy aqui"); 
} 

我在做什麼錯?爲什麼代表總是零?我試圖添加setDelegate方法,但仍然沒有運氣。

感謝, DOM

回答

0

好吧,在經過了數小時的汗水之後,我發現了這個問題。

第一...委託=零是不是主要問題。

真正的問題是觸發segue的協議方法從未被調用過。

如果我創建並初始化一個CFfirstGraph對象(甚至屬性)它將不會與已經在X代碼中創建的視圖相關,這是主要問題。

在另一方面...如果我「CTRL拖動」從UIView的到CFMainViewController一個出口,我將有一個屬性,它正是我需要的:

@interface CFMainViewController() <UIScrollViewDelegate> 
@property (weak, nonatomic) IBOutlet CFfirstGraph *FirstGraph; 

然後我分配委託給在viewDidLoad中自(CFMainViewController):

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    self.FirstGraph.delegate = self ; 

    } 

和委託方法「triggerSegue」將被執行正在從UIView的調用。

最好的問候, DOM

0

CFfirstGraph作爲一個強大的屬性。

@property (strong, nonatomic) CFfirstGraph * click; 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    self.click =[[CFfirstGraph alloc]init]; 
    self.click.delegate = self ; 


    self.scrollView.contentSize = CGSizeMake(320, 1000); 
    [self.view addSubview:self.scrollView]; 

} 
+0

不,還是零,但感謝回答。我試圖移動viewDidAppear中的click和click.delegate行,但它也不起作用。我認爲這個協議是正確實現的,所以這個問題必須隱藏在scrollview和子視圖之間的某個地方。 –

+0

你可以發送源代碼到[email protected]mail.com嗎? –

相關問題