如何清除tableviewcell中的数据再次启动重载?

时间:2012-10-17 09:40:20

标签: objective-c ios ios5 uitableview

我正在开发一个蓝牙应用程序.1)当我启动应用程序时我想要隐藏一个tableview ..在我按下一个动作按钮后我想启用一个tableview ... 2)如果我再按一个动作按钮就意味着tableviewcell清除数据并在搜索前显示为空。给我一个想法..

一些代码 -

- (IBAction)connectButtonTouched:(id)sender
{
[self.deviceTable reloadData];
self.connectButton.enabled = YES;
[self.deviceTable reloadData];
peripheralManager = [[PeripheralManager alloc] init];
peripheralManager.delegate = self;

[peripheralManager scanForPeripheralsAndConnect];
[self.deviceTable reloadData];
[NSTimer scheduledTimerWithTimeInterval:(float)5.0 target:self selector:@selector       (connectionTimer:) userInfo:nil repeats:YES];
alert=[[UIAlertView alloc] initWithTitle:@"Bluetooth" message:@"Scanning" delegate:nil    cancelButtonTitle:@"Cancel" otherButtonTitles:nil];
UIActivityIndicatorView *progress=[[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(125, 50, 30, 30)];
[alert addSubview:progress];
[progress startAnimating];
[alert show];
}

tableview

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

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [device count];
}

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

static NSString *CellIdentifier=@"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if(cell==nil)
{
cell =[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault  reuseIdentifier:CellIdentifier];

}
cell.textLabel.text=[device objectAtIndex:indexPath.row];
cell.accessoryType=UITableViewCellAccessoryDetailDisclosureButton;
return cell;
}

TableView代表

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell=[tableView cellForRowAtIndexPath:indexPath];

[self performSegueWithIdentifier:@"TableDetails" sender:tableView];
}

3 个答案:

答案 0 :(得分:0)

在.h文件中添加 BOOL标志

现在在ViewDidLoad中添加:

flag = FALSE;
tableview委托方法

中的

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
   if(flag)
     return [device count];
   else
     return 0;
}

在按钮操作方法中:

 - (IBAction)connectButtonTouched:(id)sender
 {
    if(!flag)
       flag = TRUE;
    else
       flag = FALSE;

    [self.deviceTable reloadData];
    //your other code here
 }

答案 1 :(得分:0)

如果它们在同一个视图中,为什么不给tableView一个0的alpha和userInteractionEnabled = NO?

尽管如此,我认为如果不是从界面构建器链接你的tableView,而是将其作为成员保存并在点击按钮时初始化/重新初始化它会更容易。

像这样的东西: ` - (IBAction)connectButtonTouched:(id)sender {

if(self.deviceTable){    [self.deviceTable removefromSuperview];    self.deviceTable = nil; }

self.deviceTable = [[UITableView alloc] init];

//等等 `

你也可以在peripheralManager委托中添加另一种方法......就像 - (void)didFinishScanning和inside重绘你的表视图。

我希望我能很好地理解这个问题,并以任何方式帮助你

答案 2 :(得分:0)

1.如果要在单击按钮之前隐藏表格视图,可以使用

tableView.hidden=YES;  在里面

- (IBAction)connectButtonTouched:(id)sender,您可以使用

将其显示出来
tableView.hidden=NO;
[tableView reloadData]

OR

2.如果您正在为iPad开发应用程序,则可以使用UIPopOverController来显示数据。单击按钮时,您可以在tableView内加载UIPopOverController