程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> ios-UITableView Cell Button問題

ios-UITableView Cell Button問題

編輯:編程綜合問答
UITableView Cell Button問題

給UITableView設置了一個button。

在viewDidLoad執行完,button就在右邊,但是如果進行滾動。button就開始亂跑。

代碼如下:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
}

if (indexPath.section == 0 && indexPath.row == 0 && _isAddImageViewLoad == NO) {
    // Add Image Button
    UIButton *addImage = [UIButton buttonWithType:UIButtonTypeCustom];
    UIImage* image = [UIImage imageNamed:@"AddImage@2x"];
    addImage.frame = CGRectMake(110.0f, 10.0f, 110.0f, 110.0f);
    [addImage setImage:image forState:UIControlStateNormal];

    [cell.contentView addSubview:addImage];
    _isAddImageViewLoad = YES;
} else {
    NSDictionary *dictionary = [_items objectAtIndex:indexPath.section];
    NSArray *array = [dictionary objectForKey:@"data"];
    NSString *cellValue = [array objectAtIndex:indexPath.row];
    cell.textLabel.text = cellValue;
}
return cell;
}

最佳回答:


應該是這樣,如果你用addImage的話,在retina顯示下它會自動使用e"AddImage@2x"。可能是這樣引起的問題。

tableview滾動的話相當於‘再開始’。好像你用了一個布爾型將加載button的初始cell刷新掉了。可以使用一個標題將button一直保持在頂端部分。你可以驗證一下cell被重用的時候button是不是會移動。

另外,在tableview cell中button不太好用,因為他們控制觸摸的方法大相庭徑。這樣搭配使用需要進行許多修改才能實現說得過去的效果。以後你用著用著就會遇到了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved