IOS中UITableView子线程改变UI线程的实例

时间:2022-02-27 06:32:33

1.首先明确通知改变UI的方法类似于android中得handler方法

 [selfperformSelectorOnMainThread:@selector(updateUI)withObject:nilwaitUntilDone:YES];

其中updateUI是进行改变UI控件的执行方法

2.获取数据

创建子线程不停的获取数据

 //启动子线程来获取数据

    NSThread* thread = [[NSThreadalloc]initWithTarget:selfselector:@selector(run)object:nil];

    [threadstart];

其中run是线程执行的方法:

start是启动线程

//子线程需要执行的方法

- (void)run

{

    dictionary =[[NSMutableDictionaryalloc ] init];

    while (true)

    {

            [NSThreadsleepForTimeInterval:0.5];

            [udpClientreturnIPAndPcName:dictionary];

           NSEnumerator*  em = [dictionarykeyEnumerator];

           id key;

           while(key=[em nextObject])

            {

               NSLog(@"%@",key);

                [ipaddObject:key];

               NSLog(@"%@",[dictionaryobjectForKey:key]);

                [nameaddObject:[dictionaryobjectForKey:key]];

            }

            [nameaddObject:@"请手动输入IP"];

            [ipaddObject:@"192.168.1.XXX"];

           if (ip.count>0)

           {

              break;

           }

    }

    [selfperformSelectorOnMainThread:@selector(updateUI)withObject:nilwaitUntilDone:YES];

}



3.updataUI的方法是

-(void)updateUI

{

    NSLog(@"自动刷新主机列表---");

    [self.tablereloadData];

}

参数说明:

其中[self.table reloadData];是UITableView的数据重新载入的方法,刚开始的时候还不知道,后面查资料终于知道了,UITableView的是初始化的时候载入数据的,所以动态刷新必须使用这个方法。

介绍完了,希望能帮助刚开始做IOS的人,本人学习没人带,靠百度,查资料相当的艰辛,以前学习windows的现在mac不习惯。