0

第1部分

好吧,我对此很陌生,正在制作一个新的应用程序。但是,我无法让我的随机效果。我想要的是在一个 veiwcontroller 上我有一个按钮,当按下它时,它会将您推送到 100 个其他视图控制器之一,但随机地,同时使用情节提要。现在我在故事板上有 100 个 veiwcontrollers,其中 1 个在家,并且上面有一个开始按钮,我想要它,所以当你按下开始按钮时,它会随机转到其他 100 个 veiwcontrollers 之一。任何帮助将不胜感激,因为我说我是新手。提前致谢!

第2部分

好的,它现在开始有意义了,但是就像我说的那样,我对此很陌生。我提供了一个测试代码的图像,看看它是否有效,但是当我运行它并按下按钮时它只是冻结。我的 .m 文件:

#import "StartPage.h"
#import "ViewController1.h"
#import "ViewController2.h"
#import "ViewController3.h"
#import "ViewController4.h"

@interface StartPage ()

@end

@implementation StartPage

- (IBAction)randomButton
{
NSArray *viewControllerList; {
    NSString *ViewController1 = ViewController1;
     NSString *ViewController2 = ViewController2;
     NSString *ViewController3 = ViewController3;
     NSString *ViewController4 = ViewController4;

}
NSString *randomViewControllerClassName = viewControllerList[arc4random() % 99];
UIViewController *randomVC = [[NSClassFromString(randomViewControllerClassName) alloc] init];
[self presentViewController:randomVC animated:YES completion:nil];
}

我的 .h 文件:

#import <UIKit/UIKit.h>

@interface StartPage : UIViewController

- (IBAction) randomButton;

@end

我的故事板有一个导航控制器和 5 个其他视图控制器,在第一个视图控制器上我有一个按钮,这是我的 .h 和 .m 中的“randomButton”,它与 viewcontroller1 是 segue,其余的是没有 segued,但有各自的 veiwcontroller 类。所以我被困住了,我真的很感谢你帮助我,并且很乐意回报你的恩惠。提前致谢。

4

1 回答 1

0

这样做的方法可能是无穷无尽的,其中一些方法会更好或更差,具体取决于您应用程序的其余部分。

一种简单的方法是创建一个视图控制器类名数组,然后使用随机数生成器随机选择一个索引,然后实例化并加载该类。

.m

@interface StartPage()
@property (strong, nonatomic) NSArray *viewControllerList;
@end

@implementation StartPage

- (id)init {
    if ((self = [super init])) {
        self.viewControllerList = [@"BobViewController", @"TomViewController", ..., @"OneHundrethViewController"];
    }
    return self;
}

- (IBAction)buttonTapped {
    NSString *randomViewControllerClassName = viewControllerList[arc4random() % 99];
    UIViewController *randomVC = [[NSClassFromString(randomViewControllerClassName) alloc] init]
    [self presentViewController:randomVC animated:YES completion:nil];
}
于 2013-04-02T16:04:20.323 回答