2013-12-08 40 views
0

您好我意識到,這個問題已經被問過。不幸的是,我嘗試了以前的解決方案,但無濟於事。我想要做的是讓我的UISwitch出現,而不是在滾動表格視圖時自我複製。這是我當前的嘗試,但UISwitch根本沒有顯示出來。任何幫助,我做錯了什麼將不勝感激!消除表視圖元素的複製在滾動

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *simpleTableIdentifier = @"RestaurantCell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier]; 

    if (!cell) { 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier]; 
    } 

    Restaurant *restaurant = [restaurants objectAtIndex:indexPath.row]; 

    UISwitch *notificationSwitch = [[UISwitch alloc] initWithFrame:CGRectMake(245, 15, 79, 27)]; 
    [notificationSwitch addTarget:self action:@selector(switchChanged:) forControlEvents:UIControlEventValueChanged]; 
    [cell.contentView addSubview:notificationSwitch]; 

    cell.textLabel.text = restaurant.name; 
    cell.detailTextLabel.text = restaurant.hours; 
    return cell; 
} 
+0

我不明白,你的uiswitch不會顯示或交換機顯示,但它的存在複製,你想要什麼? – Bordz

+0

更新,以顯示它的工作原理,並顯示,但不會刪除重複 – Inovize

+0

我明白了,我以前有這個問題。但我現在不在我的桌子上。我camt給你一些片段。當你不想顯示它時,你需要的是從單元視圖中移除開關。生病明天張貼片段。 – Bordz

回答

0

試試這個:

UISwitch init方法有什麼說什麼

- (id)initWithFrame:(CGRect)frame 

參數

框架

定義UISwitch對象框架的矩形。該矩形的大小組件被忽略。

討論

UISwitch覆蓋initWithFrame:方法以及強制執行適當大小的控制

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
    { 
     static NSString *simpleTableIdentifier = @"RestaurantCell"; 
     UISwitch *notificationSwitch = nil; 
     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier]; 

     if (!cell) { 
      cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier]; 


      notificationSwitch = [[UISwitch alloc] initWithFrame:CGRectZero]; 
      [notificationSwitch addTarget:self action:@selector(switchChanged:) forControlEvents:UIControlEventValueChanged]; 
      notificationSwitch.tag = 101; 

      cell.accessoryView = switchView; 
     } 

     if(!notificationSwitch) { 
      notificationSwitch = (UISwitch*)[cell.accessoryView viewWithTag:101]; 

     } 
     Restaurant *restaurant = [restaurants objectAtIndex:indexPath.row]; 

     switch (indexPath.section) { 
      case 0: 
       cell.textLabel.text = restaurant.name; 
       cell.detailTextLabel.text = restaurant.hours; 
       break; 
      default: 
       cell.textLabel.text = @"oh no!"; 
     } 
     return cell; 
    } 
+0

不幸的是我看到你這個打算,但它不顯示的切換。我確定它會工作,如果它顯示 – Inovize

+0

你仍然無法看到開關? –

+0

無遺憾的是,交換機不顯示:(當開關代碼取出的if語句 – Inovize