Objective c 两个视图控制器,避免意大利面

Objective c 两个视图控制器,避免意大利面,objective-c,xcode,Objective C,Xcode,我有两个视图控制器,第二个视图控制器需要更改第一个视图控制器中的标签。一种方法是使第一个视图控制器成为属性,以便第二个视图控制器可以直接更改它 唯一的问题是,这是意大利面编程。。。如何做到这一点而不落入这个陷阱 我的一个想法是使用委托协议来完成这项工作。如果还有其他方法,我很好奇。对于一个简单的应用程序来说,它可以完成一些小任务,比如更改标签,因此不太赞成为视图控制器创建一个属性。随着应用程序的增长,或者如果需要进行大量标签更改,最好设置代理和协议来为您更改它们。这主要取决于你:如果你有一个团队

我有两个视图控制器,第二个视图控制器需要更改第一个视图控制器中的标签。一种方法是使第一个视图控制器成为属性,以便第二个视图控制器可以直接更改它

唯一的问题是,这是意大利面编程。。。如何做到这一点而不落入这个陷阱


我的一个想法是使用委托协议来完成这项工作。如果还有其他方法,我很好奇。

对于一个简单的应用程序来说,它可以完成一些小任务,比如更改标签,因此不太赞成为视图控制器创建一个属性。随着应用程序的增长,或者如果需要进行大量标签更改,最好设置代理和协议来为您更改它们。这主要取决于你:如果你有一个团队或一个大的/正在增长的应用程序,你可能想考虑使用委托和协议,因为不管怎样,你还是要用它们来做好的MVC和KVO实践。不赞成为视图控制器创建属性。随着应用程序的增长,或者如果需要进行大量标签更改,最好设置代理和协议来为您更改它们。这主要取决于你:如果你有一个团队或一个大的/正在增长的应用程序,你可能想考虑使用委托和协议,因为不管怎样,你会使用它们来实现好的MVC和KVO实践。但对我来说,委派方案几乎总是导致某种形式的拉长面食——除了内置系统,如UITableViewController

我最近需要创建一个系统来更新自定义tableview单元格上的标签,并发现使用NSNotification要简单得多,也更容易理解。在产生新值的控制器中,我们发布通知:

[[NSNotificationCenter defaultCenter] postNotificationName: @"UpdatedDatesNotification" object: formattedDates];
[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(updateDateDisplays:) name: @"UpdatedDatesNotification" object: nil];
。。。在创建包含标签的UITableViewCell的子类中,我们正在侦听该特定通知:

[[NSNotificationCenter defaultCenter] postNotificationName: @"UpdatedDatesNotification" object: formattedDates];
[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(updateDateDisplays:) name: @"UpdatedDatesNotification" object: nil];
。。。然后将“formattedDates”(在本例中)传递给方法“UpdatedDisplays”


我相信有些人会告诉你这是错误的,但我会说1)它用最少的代码完成了任务2)它很容易阅读和搜索,3)它节省了很多时间,如果你是为了谋生,这就是钱。

也许是因为我是一个相对客观的noob(虽然对编码来说并不是什么新鲜事),但对我来说,委派方案几乎总是导致某种形式的拉长面食——除了内置系统,如UITableViewController

我最近需要创建一个系统来更新自定义tableview单元格上的标签,发现使用NSNotification更简单、更容易理解。在产生新值的控制器中,我们发布了一条通知:

[[NSNotificationCenter defaultCenter] postNotificationName: @"UpdatedDatesNotification" object: formattedDates];
[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(updateDateDisplays:) name: @"UpdatedDatesNotification" object: nil];
…在创建包含标签的UITableViewCell的子类中,我们正在侦听该特定通知:

[[NSNotificationCenter defaultCenter] postNotificationName: @"UpdatedDatesNotification" object: formattedDates];
[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(updateDateDisplays:) name: @"UpdatedDatesNotification" object: nil];
…然后将“formattedDates”(在本例中)传递给方法“UpdatedDisplays”

我相信有些人会告诉你这是错误的,但我会说1)它用最少的代码完成了任务2)它很容易阅读和搜索,3)它节省了很多时间,如果你是为了谋生,这就是钱