我想知道,在ios7中,它是使用prepareForSegue方法,而不是didSelectAtIndexPath方法?在iOS7 tableview
如果是,我該如何更改可以在ios7中運行的後續代碼?
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
NSString *tempSqlStatement = @"";
NSString *tempString = @"%";
databaseName = @"TCMdb8.sql";
NSArray *documentPaths = NSSearchPathForDirectoriesInDomains
(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDir = [documentPaths objectAtIndex:0];
databasePath = [documentsDir stringByAppendingPathComponent:
databaseName];
if (buttonNum == 0) {
Function1DetailViewController *function1DetailViewController =
[[Function1DetailViewController alloc] initWithKey:[listOfItems objectAtIndex:indexPath.row] type:@"1"];
[self.navigationController pushViewController:function1DetailViewController animated:YES];
}else if (buttonNum != 0){
if (buttonNum == 1) {
tableTitle = @"xxxx";
tempSqlStatement = [NSString stringWithFormat:@"select name from Medicine where stroke ='%@' ORDER BY length(name) ASC", [listOfItems objectAtIndex:indexPath.row]];
function1SQLStatement = [tempSqlStatement UTF8String];
}
[self checkAndCreateDatabase];
[self readFromDatabase];
[tableList reloadData];
buttonNum = 0;
}
'didSelectRowAtIndexPath'和'prepareForSegue'都在iOS7使用。他們做不同的事情。此外,它們都是在iOS7之前使用過的,並且它們的使用從iOS6到iOS7沒有改變。 鑑於您使用'pushViewController:'方法推送視圖控制器並且實際上並未使用segues,因此您將永遠無法看到調用的'prepareForSegue'方法,並且就我所知,您的代碼仍然可以在iOS7中工作。 如果它不起作用,你應該解釋什麼不是更詳細的工作。 – nhgrif
除非您使用故事板,否則您不需要執行任何操作prepareForSegue爲您提供了將值傳遞給要轉換到的視圖控制器的機會。基於你的上面的實現,我可以看到你的Function1DetailViewController有自定義的初始化程序,在這種情況下你可能沒有使用storyboard,如果是這樣的話,你的上面的實現應該沒有任何修改就可以在iOS 7.0下運行,就像SelectSelectRowAtIndexPath仍然行爲一樣正如它的意思。 – ldindu
我正在使用故事板。問題是它不能推到Function1DetailViewController.Moreover,因爲tableview沒有裏面的單元格,我不知道如何畫兩個viewcontrollers之間的鏈接 – user2914810