2012-07-06 112 views
0

如何創建一個自定義返回類型的方法?自定義返回類型的方法?

我基本上要返回「視圖控制器」,並進一步在界面生成器,並指向一個按鈕,使用同樣的方法,IBAction爲...

我基本上要低於方法調用或創建一個自定義的方法這可以使用按鈕調用...它有一種方式?

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController 

{ 
    NSUInteger currentIndex = [self.modelArray indexOfObject:[(ContentViewController *)viewController labelContents]]; 
    if(currentIndex == self.modelArray.count-1) 
    { 
     return nil; 
    } 
    ContentViewController *contentViewController = [[ContentViewController alloc] init]; 
    contentViewController.labelContents = [self.modelArray objectAtIndex:currentIndex + 1]; 
return contentViewController; 

} 

回答

-2

IBAction只是作爲提示使用,它不是「綁定」。這意味着你可以通過幾種方式之一來做你想做的事:

  1. 以編程方式。使用@selector(yourActionMethod :)設置按鈕的動作,如viewDidLoad

  2. 「trick」xcode;首先將方法設置爲IBAction,然後通過拖放來執行連接,然後更改方法的聲明/實現。它會工作。

+0

建議2號在這裏可以工作?在4.2.1上嘗試過,但我的按鈕連接丟失。 – janusbalatbat 2012-07-06 04:51:43

+0

只有你連接*出現*將丟失。我敢打賭,它仍然存在。我在Xcode 4.3.3上測試過,但我不認爲它是新的。它將帶走小圈子指標,但故事板仍然具有存檔的連接。 – 2012-07-06 05:06:22

+0

我是新來的目標c - 我應該寫下面的方法 - (ViewConroller)turnpage:(id)發送者; 當我這樣做時,它會給出警告...... **衝突返回類型void Vs viewcontrller ** – 2012-07-06 05:06:38

2

您可以創建一個方法,它在什麼版本的Xcode連接到那個按鈕

.H

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController ;  
-(IBAction)myMethod; //connect this to your button 

.M

-(IBAction)myMethod 
{ 
    //assuming you want you want to push to returned view controller 
    [self.navigationController pushViewController:[self pageViewController:viewController viewControllerAfterViewController:viewController2] animated:YES];   
} 

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController 
{ 
    NSUInteger currentIndex = [self.modelArray indexOfObject:[(ContentViewController *)viewController labelContents]]; 
    if(currentIndex == self.modelArray.count-1) 
    { 
    return nil; 
    } 

ContentViewController *contentViewController = [[ContentViewController alloc] init]; 
contentViewController.labelContents = [self.modelArray objectAtIndex:currentIndex + 1]; 
return contentViewController; 
} 
+2

這是唯一正確的答案。動作不會返回任何東西(他們會在哪裏返回?)。 – jrturton 2012-07-06 06:46:42

+0

嗨@jrturton - 這樣做時說**使用未聲明的標識符視圖控制器**我相信它會說相同的viewcontroller2以及... 快速參考.. pageviewcontroller是UIPAGEVIEWCONTROLLER的一個實例,我有4類文件 1. ViewController.h 2. ViewController.m 3. ContentViewController.h 4. ContentViewController.m – 2012-07-06 08:42:29

+0

什麼是** ViewController **和** Viewcontroller2 **在MyMethod中代表?? – 2012-07-09 08:02:08