objective-c - 我的 "viewDidLoad"在循环中

标签 objective-c ios xcode4 storyboard

我使用 XCode4 和 Storyboard 创建了一个新的 iPad 应用程序。我有几 (5) 个不同的 View Controller 。我创建了一个类 (HomeViewClass),并采用其中一个 View Controller 并将该类更改为“HomeViewClass”,并将此代码放入 viewDidLoad 方法中。我最初在一个 Non-Storyboard 项目中使用它,它在那里工作得很好......(它在指示的地方循环)。

allButtons = [NSMutableArray array];
for(int k = 40, m = 0; m < 6; m++, k+= 42)   //  this controls the vertical distance between rows
    for(int i = 0, j=182; i < 7; i++, j+=82) {  //  this controls the size (j) and horizontal distance
        calendarButton *cb= [calendarButton buttonWithType:UIButtonTypeCustom];
        [cb makeFrame:CGRectMake(j, k, 80, 40) number: allButtons.count+1 color:[UIColor orangeColor]];
        //                       x  y   w   h
        [self.view addSubview:cb];  //  <------------------- causing a viewDidLoad loop
        [allButtons addObject:cb];  // put it in the array
    }

我该如何解决这个问题?

最佳答案

您应该将 self.view 缓存在局部变量中,并检查您是否在方法的开头调用了 [super viewDidLoad]:

- (void)viewDidLoad {
    [super viewDidLoad];

    UIView *rootView = self.view;

    for(int k = 40, m = 0; m < 6; m++, k+= 42) {
        for(int i = 0, j=182; i < 7; i++, j+=82) {
            UIButton *cb = [UIButton buttonWithType:UIButtonTypeCustom];

            [rootView addSubview:cb];
        }
    }
}

关于objective-c - 我的 "viewDidLoad"在循环中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9981253/

相关文章:

iphone - XCode 4 - 删除本地化文件的目标成员资格

iphone - Xcode4:为自定义核心数据管理对象生成不同的代码

objective-c - 将多个 NSObject 添加到 NSMutableArray

objective-c - UITableView didSelectRowAtIndexPath 方法未触发

objective-c - 为协议(protocol)方法键入编码字符串

ios - 将事件从服务器发送到 ios 应用程序

ios - 5 秒后调用一个方法。没有 NSTimer

ios - 如何在 swift 中使用 daniel gindi/图表库在饼图中显示百分比符号(IOS 图表)

iphone - 如果我在选择器旋转时使用完成按钮关闭 UIPickerview 的操作表,则获取空值

cocoa - Xcode中的Interface Builder 4.如何生成类文件?