如何在 iphone 中使用应用程序委托方法
Posted
技术标签:
【中文标题】如何在 iphone 中使用应用程序委托方法【英文标题】:how to use application delegate method in iphone 【发布时间】:2010-11-25 09:54:24 【问题描述】:我尝试将标签值传递给另一个视图。我使用表格视图和表格视图放置标签。代码……
比如
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
NSString *CellIdentifier = [NSString stringWithFormat:@"%i %i",indexPath.row,indexPath.section];
UITableViewCell *cell =[self.tableViewdequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefaultreuseIdentifier:CellIdentifier] autorelease];
cell.accessoryType = UITableViewCellAccessoryNone;
NSMutableArray *arr=[NSMutableArray arrayWithArray:[finalArray objectAtIndex:indexForAll]];
NSLog(@"-=-= arr count %d -=-====",[arr count]);
NSLog(@"%@",[[arr objectAtIndex:indexPath.row]description]);
NSLog(@"-====== row value %d -=======",indexPath.row);
NSLog(@"--=-=--- strike value %@",[[arr objectAtIndex:indexPath.row]valueForKey:@"Strike"]);
//indexForAll=indexPath.row
cell.accessoryType = UITableViewCellAccessoryNone;
cell.highlighted = YES;
NSMutableArray *arr2=[NSMutableArray arrayWithArray:[arr objectAtIndex:indexPath.row]];
NSLog(@" -=-=-=-= Arr2 value : %d ",[arr2 count]);
NSLog(@"%@",[arr2 description]);
//.......................................Strike value.....................................//
UILabel *label1;
label1 =[[UILabel alloc]initWithFrame:CGRectMake(10, 3,50, 15)];
NSLog(@"-=-=--= lable1 value -%@",[[arr2 objectAtIndex:0]valueForKey:@"Strike"]);
[label1 setText:[NSString stringWithFormat:@"%@",
[[arr2 objectAtIndex:0]valueForKey:@"Strike"]]];
label1.textAlignment = UITextAlignmentCenter;
[label1 setFont:[UIFont fontWithName:@"Helvetica" size:12]];
[label1 setTextColor:[UIColor blackColor]];
[cell.contentView addSubview:label1];
NSLog(@"lable1 addded");
[self.tableView reloadData];
我想为 label1 值获取另一个视图。我已经尝试过但甚至没有成功。如果有帮助的话 谢谢
我试过了 这样的
AppDelegate_iPhone *appDelegate = (AppDelegate_iPhone *)[[UIApplication sharedApplication] delegate];
但价值没有通过。
【问题讨论】:
使用 4 个空格来缩进你的代码,这是不可读的。 结构良好的代码可能有助于更好地理解问题 你描述问题的方式不对。改进一下。 【参考方案1】:CurrentViewControllerHavingTableView 的代码
您好,尝试为您的 UILabel 创建一个属性并将其合成到 .m 文件中
@property (nonatomic,retain) UILabel *label1;
@synthesize label1;
Now make an object of your current view in the calling class like this
Code for Calling Class
CurrentViewControllerHavingTableView *viewController = [[CurrentViewControllerHavingTableView alloc] initWithNibName:@"CurrentViewControllerHavingTableView" bundle:[NSBundle mainBundle]];
Make a UILabel *label2;
label2.textlabel.text=viewController.label1.textlabel.text;
这肯定对你有用。
【讨论】:
【参考方案2】:在appDeleagate中创建一个Nstring类型的属性假设NSString *labelText;
现在
AppDelegate_iPhone *appDelegate = (AppDelegate_iPhone *)[[UIApplication sharedApplication] delegate];
In this class where you set this property.
Now before this line
--->[label1 setText:[NSString stringWithFormat:@"%@", [[arr2 objectAtIndex:0]valueForKey:@"Strike"]]];
set that property of appDelegate.
appDelegate.labelText=[NSString stringWithFormat:@"%@", [[arr2 objectAtIndex:0]valueForKey:@"Strike"]];
现在您要使用此属性的位置创建 appDelegate 对象并使用 .运算符。
如果您以正确的方式实施,这肯定会对您有所帮助。
【讨论】:
以上是关于如何在 iphone 中使用应用程序委托方法的主要内容,如果未能解决你的问题,请参考以下文章
如何在 iPhone 应用程序的不同文件中为 UIAlertview 设置委托