如何在 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 设置委托

如何在 Iphone 应用程序中隐藏状态栏

与 NSURLConnection 委托方法相关的查询

如何使用应用程序委托保存状态

出于开发目的,如何使用 iOS 7 的 NSURLSession 及其委托方法系列接受自签名 SSL 证书?

iPad应用程序UITableView委托方法没有被调用