0

我正在使用viewForFooterInSection,因为当我使用

tableView.tableFooterView = footerView;

我的按钮不可触摸。这就是为什么我想手动显示最后一部分的位置。

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section {

   if(control.selectedSegmentIndex == 1 && section == 1)
   {
if(myFooterView == nil) {
    //allocate the view if it doesn't exist yet
    myFooterView  = [[UIView alloc] init];


    //create the button
    UIButton *footButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];

    [footButton setFrame:CGRectMake(110, 10, 100, 30)];

    //set title, font size and font color
    [footButton setTitle:@"Go Home" forState:UIControlStateNormal];
    [footButton.titleLabel setFont:[UIFont boldSystemFontOfSize:18]];

    //set action of the button
    [footButton addTarget:self action:@selector(clickPressed:)
         forControlEvents:UIControlEventTouchUpInside];

    //add the button to the view
    [myFooterView addSubview:footButton];
}

//return the view for the footer
return myFooterView;
   }
}

这行代码给了我EXC_BAD_ACCESS错误,我确定该部分存在:

if(control.selectedSegmentIndex == 1 && section == 1)

看不出是什么问题。

编辑:

@property (nonatomic, retain) UISegmentedControl *control;


- (void)viewWillAppear:(BOOL)animated
{
[self setTitle:_actor.actorNaam];
NSLog(@"Actor viewwillappear %@", _actor.actorNaam);

NSArray *items = [[NSArray alloc] initWithObjects: @"Actor", @"Object", @"Operation", @"Goal", nil];
control = [[UISegmentedControl alloc] initWithItems:items]; //!!!!!!!!!!!!!!!
control.selectedSegmentIndex = segmentPushed;
control.segmentedControlStyle = UISegmentedControlStylePlain;
control.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight);
control.apportionsSegmentWidthsByContent = YES;
4

1 回答 1

0

假设您使用的是 ARC 环境,

您已将“控制”声明为保留,但由于分配方式不当,它没有保留在 ARC 环境中。

做出改变:

control = [[UISegmentedControl alloc] initWithItems:items];

利用

self.control = [[UISegmentedControl alloc] initWithItems:items];

使用self将调用默认设置器,并且您的对象将被保留,目前尚未完成。

于 2013-02-19T12:31:21.043 回答