gpt4 book ai didi

iphone - 在 'UITableView' 中选择一行时调用新 View

转载 作者:可可西里 更新时间:2023-11-01 03:32:36 26 4
gpt4 key购买 nike

我目前正在编写我的第一个 iPhone 应用程序,但遇到了一个问题。我有一个包含 UITableView 的 View 。这是我第一次尝试这样做,这是我想要实现的行为:

当用户选择其中一行时,我希望这会调用一个新 View ,将用户带到另一个页面,显示有关他们所选择内容的信息。

我目前有它,所以当用户选择一行时,它会在同一 View 中显示一个 UIAlert,但这不符合我的需要。我已经通过界面生成器设置了 UITableView,并将以下代码输入到我的 .m 文件中以进行设置。

- (NSInteger)tableView:(UITableView *)tableView 
numberOfRowsInSection:(NSInteger)section {
//return the value
return 10;
}

//now we define the cells.
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath {

// Identifier for retrieving reusable cells.
static NSString *cellIdentifier = @"MyCellIdentifier";

// Attempt to request the reusable cell.
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

// No cell available - create one
if(cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:cellIdentifier];
}

// Set the text of the cell to the row index.
cell.textLabel.text = [NSString stringWithFormat:@"iPad %d", indexPath.row];

return cell;
}

这将创建一个包含十行的列表。以下代码在点击时为我提供了 UIAlert,但是,我想删除它并让它调用我选择的新 View ;

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

// Show an alert with the index selected.
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle:@"iPad Selected"
message:[NSString stringWithFormat:@"iPad %d", indexPath.row]
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
[alert release];

}

任何人都可以帮助完成最后一段代码吗?我希望它调用的 View 称为“ProteinView”。

最佳答案

好的,我们需要做的是使用我们已经可以轻松使用的 UITableView 方法之一。我们将执行以下操作。

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

ProteinView *detailViewController = [[ProteinView alloc] initWithNibName:@"ProteinView" bundle:nil];

// It is here we'd pass information from the currently selected UITableViewCell to the ProteinView.
// An example of this is the following.

// I would do it like this, but others would differ slightly.
NSString *titleString = [[[NSString alloc] initWithFormat:@"iPad %d",indexPath.row] autorelease];

// title is an object of detailViewController (ProteinView). In my own instances, I have always made a NSString which in viewDiDLoad is made the self.navigationBar.title string. Look below for what my ProteinView.m and .h would look like.
detailViewController.stringTitle = titleString;
// ...
// Pass the selected object to the new view controller.
[self.navigationController pushViewController:detailViewController animated:YES];
[detailViewController release];
}

编辑

// -------- ProteinView.m -------- //

- (void)viewDidLoad {

[super viewDidLoad];
// Do any additional setup after loading the view from its nib.

// Here we set the navigationItem.title to the stringTitle. stringTitle is declared in the .h. Think of it as a global scope variable. It is also propertised in the .h and then synthesized in the .m of ProteinView.
self.navigationItem.title = stringTitle;
}

我还没有编译这个,所以我不知道它是否能完全工作。但这绝对是最快、最简单的方法!

关于iphone - 在 'UITableView' 中选择一行时调用新 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5724311/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com