求助pushViewController跳转页面之后TableView不加载数据的问题

 我来答
受司大人
2015-01-24 · 知道合伙人影视综艺行家
受司大人
知道合伙人影视综艺行家
采纳数:20262 获赞数:171846
毕业于浙江广厦,有一定的电脑专业基础和两年工作经验,读过相关书籍多本

向TA提问 私信TA
展开全部
工程使用的Storyboard,在第一个页面跳转到第二个页面时候需要显示一个新闻的列表,以前是使用的

[self performSegueWithIdentifier:@"ShowSubColumn" sender:self];

完全正常,只是不能显示Navigationbar

为了能正常显示Navigationbar,我将跳转方式改成了

[self.navigationController pushViewController:newsListView animated:YES];

结果在第二个页面列表就不加载了。通过断点查看发现

self.newsListTable=0x000000000也就是说这个页面的UItableView都没有成功分配内存,而且

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section



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

都没有执行。

//这是第一个页面的跳转部分

//很奇怪的是我就修改了这里,将performSegueWithIdentifier改成pushViewController的方式就出现问题了

//点击列表的行跳转页面

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

{

NSString *str=[columnCodeArray objectAtIndex:indexPath.row];

int columnCode=[str integerValue];

int i=[self checkColumnCode:columnCode];

if (i==kColumnNoSub) {

NewsListViewController *newsListView=[[NewsListViewController alloc]init];

newsListView.columnCode=columnCode;

[self.navigationController pushViewController:newsListView animated:YES];

}

else

{

//本来是用的这样的跳转方式

// [self performSegueWithIdentifier:@"ShowSubColumn" sender:self];

}

}

//这里使用的一个子线程来获取服务器返回的数据

-(void)useSubThreadConnect

{

subThread=[[NSThread alloc]initWithTarget:self selector:@selector(connectServerse) object:nil];

[subThread start];

}

-(void)connectServerse

{

NSString *requestStr=[comTool getConnectStringWithURL:kaYingURL WithCode:columnCode WithPage:getNewsPage];

NSURL *URL=[NSURL URLWithString:requestStr];

NSURLRequest *request=[[NSURLRequest alloc]initWithURL:URL];

NSURLConnection *connect=[[NSURLConnection alloc]initWithRequest:request delegate:self];

while(!finished) {

[[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]];

}

request=nil;

connect=nil;

}

//当连接成功获得数据时执行

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {

//获取服务器返回的数据

NSString *tempString = [[NSString alloc] initWithData:data encoding: NSUTF8StringEncoding];

[outString appendString:tempString];

// NSLog(@"%@", outString);

}

//当连接错误时执行

-(void) connection:(NSURLConnection *)connection

didFailWithError: (NSError *)error {

//弹出一个错误信息对话框

// [comTool showErrorAlertWithError:error];

[subThread cancel];

}

//当获取数据结束时执行

- (void) connectionDidFinishLoading: (NSURLConnection*) connection {

articleArray = [MainViewControllerDelegate getArticleArray:outString isImageNews:NO];//获取到转换成Article对象数组

finished=YES;

[subThread cancel];

[self.newsListTable reloadData];

}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式