我使用了故事板进行项目。问题是它无法推送到Function1DetailViewController.Moreover,因为tableview里面没有单元格,我不知道如何绘制segue以连接两个视图控制器。另外,我不知道如何编写prepareForSegue方法。
我是否还需要在didSelectRowAtIndexPath方法中进行一些更改?
-(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) {
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;
}
}
答案 0 :(得分:1)
您可以在故事板中的两个视图控制器之间绘制一个segue。选择整个视图控制器(最好单击状态栏的位置),按住Ctrl键拖动到另一个控制器。给新的segue一个标识符。
如果要在视图控制器中触发它:
[self performSegueWithIdentifier:@"TheIdentifierYouPutInIB"];
您可以使用上述方法替换didSelectRowAtIndexPath
方法中的导航逻辑。 See here for prepare for segue example.
答案 1 :(得分:1)
以下是创建segue的不同方法:
1 - 从细胞到细节控制器:
2 - 使用连接检查器
3 - 从View Controller到View Controller
添加标识符:
执行segue:
[self performSegueWithIdentifier:@"Function1Segue" sender:sender];
现在就是这样,如果您需要将一些数据传递给该视图控制器,这将只执行segue。然后你必须实现以下segue deleguate:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
// Make sure your segue name in storyboard is the same as this line
if ([[segue identifier] isEqualToString:@"Function1Segue"])
{
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
// Get reference to Function1DetailViewController
Function1DetailViewController *functionVC =
(Function1DetailViewController *)segue.destinationViewController;
functionVC.item = [listOfItems objectAtIndex:indexPath.row] type:@"1"];
}
}
functionVC.item
因为您要在Function1DetailViewController
中设置名为item的属性。
答案 2 :(得分:0)
选择视图控制器图标(源视图控制器下方的黄色)并将其拖动到目标视图控制器。你可以通过程序调用它。