这个视图可能还没有收到initWithFrame:或initWithCoder:

时间:2014-08-18 07:22:50

标签: ios objective-c uitableview

我正在使用tableView并且已经实现了其委托和数据源方法。我对tableViews和代表并不陌生。但我仍然遇到了这次崩溃:

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Requesting the window of a view (<UIView: 0xc8b7a00; frame = (0 0; 0 0); transform = [0, 0, 0, 0, 0, 0]; alpha = 0; opaque = NO; autoresize = W; layer = (null)>) with a nil layer. This view probably hasn't received initWithFrame: or initWithCoder:.'

我已经为我使用的其他许多tableViews使用了相同的代码,但我不知道我错在哪里,而且我也知道这是一个旧的或重复的问题但不是之前的问题解决方案对我有用。这是我的委托和数据源方法。

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
    return 2;
}

-(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    int numberOfRows = 0;
    if(section == 0){
        numberOfRows = [self.lotteryArray count];
    }else{
        numberOfRows = 10;
    }
    return numberOfRows;
}


-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    UITableViewCell *cellToReturn = nil;

    LedenactiesCell *cell = (LedenactiesCell *)[self.tableView dequeueReusableCellWithIdentifier:@"LedenactiesCell"];
    if(!cell){
        NSString *nibName = @"LedenactiesCellView";
        [self.cellOwner loadMyNibFile:nibName];
        cell = (LedenactiesCell *)self.cellOwner.cell;
    }
    cell.titleLbl = @"My Text for cell";
    cellToReturn = cell;
    return cellToReturn;
}

我已调试了我的代码,它永远不会转到cellForRowAtIndexPath:方法。

任何建议..

3 个答案:

答案 0 :(得分:1)

您没有正确初始化包含该表的视图。使用initWithFrame:或从Storyboard初始化它。

答案 1 :(得分:0)

您的if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]){}方法可能缺少initWithStyle:

试着这希望这可以解决你的问题。

 - (id) initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {

            if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]){

// initialise your objects here...


            } 
            return self;
    }

答案 2 :(得分:-1)

确保在使用之前初始化该属性。在我的情况下,我已经在viewDidLoad中初始化了textfield属性,但我试图在其他地方使用它。

  -(Void)viewDidLoad
    {
    textField = [UITextField alloc]init];
    }

And I am using here

    -(void)someMethod
    {
    textField.text = @"sdsfs";
    }
I got error.....

Right way is 

    -(void)someMethod
        {
        textField = [UITextField alloc]init];
        textField.text = @"sdsfs";
        }

I hope it helps to someone.