2012-07-06 111 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