Code view:

A painting is a person's account of this edit as text, recorded independently of the node mapping - a rendering often has several equally defensible answers where the mapping has one. Deletions and insertions carry no position on the opposite side in a painting, so that panel draws no caret for them.

Before

…lines 1–524 unchanged (524 lines)
525 func isTransfersButtonVisible() -> Bool {
526 if topViewController?.navigationItem.rightBarButtonItems?.first(where: { $0.tag == transfersButtonTag }) != nil {
527 return true
528 }
529 return false
530 }
531
532 // MARK: - Left
533
534 func setNavigationLeftItems() async { }
535}
536

After

…lines 1–525 unchanged (525 lines)
526 if topViewController?.navigationItem.rightBarButtonItems?.first(where: { $0.tag == transfersButtonTag }) != nil {
527 return true
528 }
529 return false
530 }
531
532 /// Changes the tint color of a specific right bar button item identified by tag.
533 /// - Parameters:
534 /// - tag: The tag used to identify the UIBarButtonItem.
535 /// - color: The UIColor to be applied.
536 @MainActor
537 func setRightItemColor(tag: Int, to color: UIColor) {
538 guard
539 let items = topViewController?.navigationItem.rightBarButtonItems,
540 let item = items.first(where: { $0.tag == tag }),
541 let button = item.customView as? UIButton
542 else { return }
543
544 applyTint(button, color: color)
545 }
546
547 /// Changes the tint color of all right bar button items currently visible
548 /// in the topViewController's navigation item.
549 /// - Parameter color: The UIColor to be applied.
550 @MainActor
551 func setAllRightItemsColor(_ color: UIColor) {
552 guard let items = topViewController?.navigationItem.rightBarButtonItems else { return }
553
554 for item in items {
555 if let button = item.customView as? UIButton {
556 applyTint(button, color: color)
557 }
558 }
559 }
560
561 // MARK: - Left
562
563 func setNavigationLeftItems() async { }
564
565 /// Changes the tint color of a specific left bar button item identified by tag.
566 /// - Parameters:
567 /// - tag: The tag used to identify the UIBarButtonItem.
568 /// - color: The UIColor to be applied.
569 @MainActor
570 func setLeftItemColor(tag: Int, to color: UIColor) {
571 guard
572 let items = topViewController?.navigationItem.leftBarButtonItems,
573 let item = items.first(where: { $0.tag == tag }),
574 let button = item.customView as? UIButton
575 else { return }
576
577 applyTint(button, color: color)
578 }
579
580 /// Changes the tint color of all left bar button items currently visible
581 /// in the topViewController's navigation item.
582 /// - Parameter color: The UIColor to be applied.
583 @MainActor
584 func setAllLeftItemsColor(_ color: UIColor) {
585 guard let items = topViewController?.navigationItem.leftBarButtonItems else { return }
586
587 for item in items {
588 if let button = item.customView as? UIButton {
589 applyTint(button, color: color)
590 }
591 }
592 }
593
594 // MARK: - Tint helpers
595
596 /// Applies a tint color to a given UIButton, handling both UIButton.Configuration
597 /// and legacy setup with SF Symbols or titles.
598 /// - Parameters:
599 /// - button: The UIButton to apply the color.
600 /// - color: The UIColor to be applied.
601 @MainActor
602 private func applyTint(_ button: UIButton, color: UIColor) {
603 if var cfg = button.configuration {
604 // Se in futuro userai UIButton.Configuration, tieni il colore allineato qui
605 cfg.baseForegroundColor = color
606 button.configuration = cfg
607 } else {
608 // Config attuale (nessuna configuration): SF Symbols sono template, quindi basta tintColor
609 button.tintColor = color
610 button.setTitleColor(color, for: .normal)
611 }
612 }
613
614 /// Updates the tint color of all preloaded and currently visible right bar buttons.
615 /// - Parameter color: The UIColor to be applied to all right bar button items.
616 @MainActor
617 func updateRightBarButtonsTint(to color: UIColor) {
618 let rightButtons: [UIButton] = [
619 menuButton,
620 assistantButton,
621 notificationsButton,
622 transfersButton
623 ]
624
625 // Apply color to preloaded button instances
626 for button in rightButtons {
627 if var cfg = button.configuration {
628 cfg.baseForegroundColor = color
629 button.configuration = cfg
630 } else {
631 button.tintColor = color
632 button.setTitleColor(color, for: .normal)
633 }
634 }
635
636 // Update also those already visible in the navigation bar
637 if let rightItems = topViewController?.navigationItem.rightBarButtonItems {
638 for item in rightItems {
639 if let button = item.customView as? UIButton {
640 button.tintColor = color
641 button.setTitleColor(color, for: .normal)
642 }
643 }
644 }
645 }
646}
647

Before

source_file
comment "// SPDX-FileCopyrightText: Nextcloud GmbH"
comment "// SPDX-FileCopyrightText: 2025 Marino Faggiana"
comment "// SPDX-License-Identifier: GPL-3.0-or-later"
import_declaration
import "import"
identifier
simple_identifier "UIKit"
import_declaration
import "import"
identifier
simple_identifier "SwiftUI"
import_declaration
import "import"
identifier
simple_identifier "NextcloudKit"
class_declaration
class "class"
type_identifier "NCMainNavigationController"
: ":"
inheritance_specifier
user_type
type_identifier "UINavigationController"
, ","
inheritance_specifier
user_type
type_identifier "UINavigationControllerDelegate"
class_body
{ "{"
property_declaration
value_binding_pattern
let "let"
pattern
simple_identifier "database"
= "="
navigation_expression
simple_identifier "NCManageDatabase"
navigation_suffix
. "."
simple_identifier "shared"
property_declaration
value_binding_pattern
let "let"
pattern
simple_identifier "global"
= "="
navigation_expression
simple_identifier "NCGlobal"
navigation_suffix
. "."
simple_identifier "shared"
property_declaration
value_binding_pattern
let "let"
pattern
simple_identifier "utility"
= "="
call_expression
simple_identifier "NCUtility"
call_suffix
value_arguments
( "("
) ")"
property_declaration
value_binding_pattern
let "let"
pattern
simple_identifier "utilityFileSystem"
= "="
call_expression
simple_identifier "NCUtilityFileSystem"
call_suffix
value_arguments
( "("
) ")"
property_declaration (+25 nodes collapsed)
property_declaration (+27 nodes collapsed)
property_declaration (+22 nodes collapsed)
property_declaration (+22 nodes collapsed)
property_declaration (+22 nodes collapsed)
property_declaration (+39 nodes collapsed)
property_declaration
value_binding_pattern
let "let"
pattern
simple_identifier "menuButtonTag"
= "="
integer_literal "100"
property_declaration
value_binding_pattern
let "let"
pattern
simple_identifier "assistantButtonTag"
= "="
integer_literal "101"
property_declaration
value_binding_pattern
let "let"
pattern
simple_identifier "notificationsButtonTag"
= "="
integer_literal "102"
property_declaration
value_binding_pattern
let "let"
pattern
simple_identifier "transfersButtonTag"
= "="
integer_literal "103"
property_declaration (+44 nodes collapsed)
property_declaration (+42 nodes collapsed)
property_declaration (+44 nodes collapsed)
property_declaration (+42 nodes collapsed)
property_declaration (+44 nodes collapsed)
property_declaration (+42 nodes collapsed)
property_declaration (+44 nodes collapsed)
property_declaration (+42 nodes collapsed)
comment "// MARK: - View Life Cycle"
function_declaration (+1131 nodes collapsed)
comment "/// Called before a view controller is shown by the navigati"...
comment "/// This method checks if the view controller is of type `NC"...
comment "/// If so, it skips applying the custom navigation bar appea"...
comment "/// Otherwise, it applies the standard appearance and update"...
comment "///"
comment "/// - Parameters:"
comment "/// - navigationController: The navigation controller that"...
comment "/// - viewController: The view controller that is about to"...
comment "/// - animated: True if the transition is animated; false "...
function_declaration (+49 nodes collapsed)
comment "// MARK: - Right"
function_declaration (+349 nodes collapsed)
function_declaration (+681 nodes collapsed)
function_declaration
func "func"
simple_identifier "createRightMenu"
( "("
) ")"
async "async"
-> "->"
optional_type
user_type
type_identifier "UIMenu"
?
? "?"
function_body
{ "{"
statements
control_transfer_statement
return "return"
nil "nil"
} "}"
function_declaration (+92 nodes collapsed)
function_declaration (+2659 nodes collapsed)
function_declaration (+644 nodes collapsed)
function_declaration (+66 nodes collapsed)
function_declaration (+66 nodes collapsed)
comment "// MARK: - Left"
function_declaration
func "func"
simple_identifier "setNavigationLeftItems"
( "("
) ")"
async "async"
function_body
{ "{"
} "}"
} "}"

After

source_file
comment "// SPDX-FileCopyrightText: Nextcloud GmbH"
comment "// SPDX-FileCopyrightText: 2025 Marino Faggiana"
comment "// SPDX-License-Identifier: GPL-3.0-or-later"
import_declaration
import "import"
identifier
simple_identifier "UIKit"
import_declaration
import "import"
identifier
simple_identifier "SwiftUI"
import_declaration
import "import"
identifier
simple_identifier "NextcloudKit"
class_declaration
class "class"
type_identifier "NCMainNavigationController"
: ":"
inheritance_specifier
user_type
type_identifier "UINavigationController"
, ","
inheritance_specifier
user_type
type_identifier "UINavigationControllerDelegate"
class_body
{ "{"
property_declaration
value_binding_pattern
let "let"
pattern
simple_identifier "database"
= "="
navigation_expression
simple_identifier "NCManageDatabase"
navigation_suffix
. "."
simple_identifier "shared"
property_declaration
value_binding_pattern
let "let"
pattern
simple_identifier "global"
= "="
navigation_expression
simple_identifier "NCGlobal"
navigation_suffix
. "."
simple_identifier "shared"
property_declaration
value_binding_pattern
let "let"
pattern
simple_identifier "utility"
= "="
call_expression
simple_identifier "NCUtility"
call_suffix
value_arguments
( "("
) ")"
property_declaration
value_binding_pattern
let "let"
pattern
simple_identifier "utilityFileSystem"
= "="
call_expression
simple_identifier "NCUtilityFileSystem"
call_suffix
value_arguments
( "("
) ")"
property_declaration (+25 nodes collapsed)
property_declaration (+27 nodes collapsed)
property_declaration (+22 nodes collapsed)
property_declaration (+22 nodes collapsed)
property_declaration (+22 nodes collapsed)
property_declaration (+39 nodes collapsed)
property_declaration
value_binding_pattern
let "let"
pattern
simple_identifier "menuButtonTag"
= "="
integer_literal "100"
property_declaration
value_binding_pattern
let "let"
pattern
simple_identifier "assistantButtonTag"
= "="
integer_literal "101"
property_declaration
value_binding_pattern
let "let"
pattern
simple_identifier "notificationsButtonTag"
= "="
integer_literal "102"
property_declaration
value_binding_pattern
let "let"
pattern
simple_identifier "transfersButtonTag"
= "="
integer_literal "103"
property_declaration (+44 nodes collapsed)
property_declaration (+42 nodes collapsed)
property_declaration (+44 nodes collapsed)
property_declaration (+42 nodes collapsed)
property_declaration (+44 nodes collapsed)
property_declaration (+42 nodes collapsed)
property_declaration (+44 nodes collapsed)
property_declaration (+42 nodes collapsed)
comment "// MARK: - View Life Cycle"
function_declaration (+1131 nodes collapsed)
comment "/// Called before a view controller is shown by the navigati"...
comment "/// This method checks if the view controller is of type `NC"...
comment "/// If so, it skips applying the custom navigation bar appea"...
comment "/// Otherwise, it applies the standard appearance and update"...
comment "///"
comment "/// - Parameters:"
comment "/// - navigationController: The navigation controller that"...
comment "/// - viewController: The view controller that is about to"...
comment "/// - animated: True if the transition is animated; false "...
function_declaration (+49 nodes collapsed)
comment "// MARK: - Right"
function_declaration (+349 nodes collapsed)
function_declaration (+681 nodes collapsed)
function_declaration
func "func"
simple_identifier "createRightMenu"
( "("
) ")"
async "async"
-> "->"
optional_type
user_type
type_identifier "UIMenu"
?
? "?"
function_body
{ "{"
statements
control_transfer_statement
return "return"
nil "nil"
} "}"
function_declaration (+92 nodes collapsed)
function_declaration (+2659 nodes collapsed)
function_declaration (+644 nodes collapsed)
function_declaration (+66 nodes collapsed)
function_declaration (+66 nodes collapsed)
comment "/// Changes the tint color of a specific right bar button it"...
comment "/// - Parameters:"
comment "/// - tag: The tag used to identify the UIBarButtonItem."
comment "/// - color: The UIColor to be applied."
function_declaration
modifiers
attribute
@ "@"
user_type
type_identifier "MainActor"
func "func"
simple_identifier "setRightItemColor"
( "("
parameter
simple_identifier "tag"
: ":"
user_type
type_identifier "Int"
, ","
parameter
simple_identifier "to"
simple_identifier "color"
: ":"
user_type
type_identifier "UIColor"
) ")"
function_body
{ "{"
statements
guard_statement
guard "guard"
value_binding_pattern
let "let"
simple_identifier "items"
= "="
navigation_expression
navigation_expression
simple_identifier "topViewController"
?
? "?"
navigation_suffix
. "."
simple_identifier "navigationItem"
navigation_suffix
. "."
simple_identifier "rightBarButtonItems"
, ","
value_binding_pattern
let "let"
simple_identifier "item"
= "="
call_expression
navigation_expression
simple_identifier "items"
navigation_suffix
. "."
simple_identifier "first"
call_suffix
value_arguments
( "("
value_argument
value_argument_label
simple_identifier "where"
: ":"
lambda_literal
{ "{"
statements
equality_expression
navigation_expression
simple_identifier "$0"
navigation_suffix
. "."
simple_identifier "tag"
== "=="
simple_identifier "tag"
} "}"
) ")"
, ","
value_binding_pattern
let "let"
simple_identifier "button"
= "="
as_expression
navigation_expression
simple_identifier "item"
navigation_suffix
. "."
simple_identifier "customView"
as_operator
as? "as?"
user_type
type_identifier "UIButton"
else "else"
{ "{"
statements
control_transfer_statement
return "return"
} "}"
call_expression
simple_identifier "applyTint"
call_suffix
value_arguments
( "("
value_argument
simple_identifier "button"
, ","
value_argument
value_argument_label
simple_identifier "color"
: ":"
simple_identifier "color"
) ")"
} "}"
comment "/// Changes the tint color of all right bar button items cur"...
comment "/// in the topViewController's navigation item."
comment "/// - Parameter color: The UIColor to be applied."
function_declaration
modifiers
attribute
@ "@"
user_type
type_identifier "MainActor"
func "func"
simple_identifier "setAllRightItemsColor"
( "("
parameter
simple_identifier "_"
simple_identifier "color"
: ":"
user_type
type_identifier "UIColor"
) ")"
function_body
{ "{"
statements
guard_statement
guard "guard"
value_binding_pattern
let "let"
simple_identifier "items"
= "="
navigation_expression
navigation_expression
simple_identifier "topViewController"
?
? "?"
navigation_suffix
. "."
simple_identifier "navigationItem"
navigation_suffix
. "."
simple_identifier "rightBarButtonItems"
else "else"
{ "{"
statements
control_transfer_statement
return "return"
} "}"
for_statement
for "for"
pattern
simple_identifier "item"
in "in"
simple_identifier "items"
{ "{"
statements
if_statement
if "if"
value_binding_pattern
let "let"
simple_identifier "button"
= "="
as_expression
navigation_expression
simple_identifier "item"
navigation_suffix
. "."
simple_identifier "customView"
as_operator
as? "as?"
user_type
type_identifier "UIButton"
{ "{"
statements
call_expression
simple_identifier "applyTint"
call_suffix
value_arguments
( "("
value_argument
simple_identifier "button"
, ","
value_argument
value_argument_label
simple_identifier "color"
: ":"
simple_identifier "color"
) ")"
} "}"
} "}"
} "}"
comment "// MARK: - Left"
function_declaration
func "func"
simple_identifier "setNavigationLeftItems"
( "("
) ")"
async "async"
function_body
{ "{"
} "}"
comment "/// Changes the tint color of a specific left bar button ite"...
comment "/// - Parameters:"
comment "/// - tag: The tag used to identify the UIBarButtonItem."
comment "/// - color: The UIColor to be applied."
function_declaration
modifiers
attribute
@ "@"
user_type
type_identifier "MainActor"
func "func"
simple_identifier "setLeftItemColor"
( "("
parameter
simple_identifier "tag"
: ":"
user_type
type_identifier "Int"
, ","
parameter
simple_identifier "to"
simple_identifier "color"
: ":"
user_type
type_identifier "UIColor"
) ")"
function_body
{ "{"
statements
guard_statement
guard "guard"
value_binding_pattern
let "let"
simple_identifier "items"
= "="
navigation_expression
navigation_expression
simple_identifier "topViewController"
?
? "?"
navigation_suffix
. "."
simple_identifier "navigationItem"
navigation_suffix
. "."
simple_identifier "leftBarButtonItems"
, ","
value_binding_pattern
let "let"
simple_identifier "item"
= "="
call_expression
navigation_expression
simple_identifier "items"
navigation_suffix
. "."
simple_identifier "first"
call_suffix
value_arguments
( "("
value_argument
value_argument_label
simple_identifier "where"
: ":"
lambda_literal
{ "{"
statements
equality_expression
navigation_expression
simple_identifier "$0"
navigation_suffix
. "."
simple_identifier "tag"
== "=="
simple_identifier "tag"
} "}"
) ")"
, ","
value_binding_pattern
let "let"
simple_identifier "button"
= "="
as_expression
navigation_expression
simple_identifier "item"
navigation_suffix
. "."
simple_identifier "customView"
as_operator
as? "as?"
user_type
type_identifier "UIButton"
else "else"
{ "{"
statements
control_transfer_statement
return "return"
} "}"
call_expression
simple_identifier "applyTint"
call_suffix
value_arguments
( "("
value_argument
simple_identifier "button"
, ","
value_argument
value_argument_label
simple_identifier "color"
: ":"
simple_identifier "color"
) ")"
} "}"
comment "/// Changes the tint color of all left bar button items curr"...
comment "/// in the topViewController's navigation item."
comment "/// - Parameter color: The UIColor to be applied."
function_declaration
modifiers
attribute
@ "@"
user_type
type_identifier "MainActor"
func "func"
simple_identifier "setAllLeftItemsColor"
( "("
parameter
simple_identifier "_"
simple_identifier "color"
: ":"
user_type
type_identifier "UIColor"
) ")"
function_body
{ "{"
statements
guard_statement
guard "guard"
value_binding_pattern
let "let"
simple_identifier "items"
= "="
navigation_expression
navigation_expression
simple_identifier "topViewController"
?
? "?"
navigation_suffix
. "."
simple_identifier "navigationItem"
navigation_suffix
. "."
simple_identifier "leftBarButtonItems"
else "else"
{ "{"
statements
control_transfer_statement
return "return"
} "}"
for_statement
for "for"
pattern
simple_identifier "item"
in "in"
simple_identifier "items"
{ "{"
statements
if_statement
if "if"
value_binding_pattern
let "let"
simple_identifier "button"
= "="
as_expression
navigation_expression
simple_identifier "item"
navigation_suffix
. "."
simple_identifier "customView"
as_operator
as? "as?"
user_type
type_identifier "UIButton"
{ "{"
statements
call_expression
simple_identifier "applyTint"
call_suffix
value_arguments
( "("
value_argument
simple_identifier "button"
, ","
value_argument
value_argument_label
simple_identifier "color"
: ":"
simple_identifier "color"
) ")"
} "}"
} "}"
} "}"
comment "// MARK: - Tint helpers"
comment "/// Applies a tint color to a given UIButton, handling both "...
comment "/// and legacy setup with SF Symbols or titles."
comment "/// - Parameters:"
comment "/// - button: The UIButton to apply the color."
comment "/// - color: The UIColor to be applied."
function_declaration
modifiers
attribute
@ "@"
user_type
type_identifier "MainActor"
visibility_modifier
private "private"
func "func"
simple_identifier "applyTint"
( "("
parameter
simple_identifier "_"
simple_identifier "button"
: ":"
user_type
type_identifier "UIButton"
, ","
parameter
simple_identifier "color"
: ":"
user_type
type_identifier "UIColor"
) ")"
function_body
{ "{"
statements
if_statement
if "if"
value_binding_pattern
var "var"
simple_identifier "cfg"
= "="
navigation_expression
simple_identifier "button"
navigation_suffix
. "."
simple_identifier "configuration"
{ "{"
comment "// Se in futuro userai UIButton.Configuration, tieni il colo"...
statements
assignment
directly_assignable_expression
navigation_expression
simple_identifier "cfg"
navigation_suffix
. "."
simple_identifier "baseForegroundColor"
= "="
simple_identifier "color"
assignment
directly_assignable_expression
navigation_expression
simple_identifier "button"
navigation_suffix
. "."
simple_identifier "configuration"
= "="
simple_identifier "cfg"
} "}"
else "else"
{ "{"
comment "// Config attuale (nessuna configuration): SF Symbols sono t"...
statements
assignment
directly_assignable_expression
navigation_expression
simple_identifier "button"
navigation_suffix
. "."
simple_identifier "tintColor"
= "="
simple_identifier "color"
call_expression
navigation_expression
simple_identifier "button"
navigation_suffix
. "."
simple_identifier "setTitleColor"
call_suffix
value_arguments
( "("
value_argument
simple_identifier "color"
, ","
value_argument
value_argument_label
simple_identifier "for"
: ":"
prefix_expression
. "."
simple_identifier "normal"
) ")"
} "}"
} "}"
comment "/// Updates the tint color of all preloaded and currently vi"...
comment "/// - Parameter color: The UIColor to be applied to all righ"...
function_declaration
modifiers
attribute
@ "@"
user_type
type_identifier "MainActor"
func "func"
simple_identifier "updateRightBarButtonsTint"
( "("
parameter
simple_identifier "to"
simple_identifier "color"
: ":"
user_type
type_identifier "UIColor"
) ")"
function_body
{ "{"
statements
property_declaration
value_binding_pattern
let "let"
pattern
simple_identifier "rightButtons"
type_annotation
: ":"
array_type
[ "["
user_type
type_identifier "UIButton"
] "]"
= "="
array_literal
[ "["
simple_identifier "menuButton"
, ","
simple_identifier "assistantButton"
, ","
simple_identifier "notificationsButton"
, ","
simple_identifier "transfersButton"
] "]"
comment "// Apply color to preloaded button instances"
for_statement
for "for"
pattern
simple_identifier "button"
in "in"
simple_identifier "rightButtons"
{ "{"
statements
if_statement
if "if"
value_binding_pattern
var "var"
simple_identifier "cfg"
= "="
navigation_expression
simple_identifier "button"
navigation_suffix
. "."
simple_identifier "configuration"
{ "{"
statements
assignment
directly_assignable_expression
navigation_expression
simple_identifier "cfg"
navigation_suffix
. "."
simple_identifier "baseForegroundColor"
= "="
simple_identifier "color"
assignment
directly_assignable_expression
navigation_expression
simple_identifier "button"
navigation_suffix
. "."
simple_identifier "configuration"
= "="
simple_identifier "cfg"
} "}"
else "else"
{ "{"
statements
assignment
directly_assignable_expression
navigation_expression
simple_identifier "button"
navigation_suffix
. "."
simple_identifier "tintColor"
= "="
simple_identifier "color"
call_expression
navigation_expression
simple_identifier "button"
navigation_suffix
. "."
simple_identifier "setTitleColor"
call_suffix
value_arguments
( "("
value_argument
simple_identifier "color"
, ","
value_argument
value_argument_label
simple_identifier "for"
: ":"
prefix_expression
. "."
simple_identifier "normal"
) ")"
} "}"
} "}"
comment "// Update also those already visible in the navigation bar"
if_statement
if "if"
value_binding_pattern
let "let"
simple_identifier "rightItems"
= "="
navigation_expression
navigation_expression
simple_identifier "topViewController"
?
? "?"
navigation_suffix
. "."
simple_identifier "navigationItem"
navigation_suffix
. "."
simple_identifier "rightBarButtonItems"
{ "{"
statements
for_statement
for "for"
pattern
simple_identifier "item"
in "in"
simple_identifier "rightItems"
{ "{"
statements
if_statement
if "if"
value_binding_pattern
let "let"
simple_identifier "button"
= "="
as_expression
navigation_expression
simple_identifier "item"
navigation_suffix
. "."
simple_identifier "customView"
as_operator
as? "as?"
user_type
type_identifier "UIButton"
{ "{"
statements
assignment
directly_assignable_expression
navigation_expression
simple_identifier "button"
navigation_suffix
. "."
simple_identifier "tintColor"
= "="
simple_identifier "color"
call_expression
navigation_expression
simple_identifier "button"
navigation_suffix
. "."
simple_identifier "setTitleColor"
call_suffix
value_arguments
( "("
value_argument
simple_identifier "color"
, ","
value_argument
value_argument_label
simple_identifier "for"
: ":"
prefix_expression
. "."
simple_identifier "normal"
) ")"
} "}"
} "}"
} "}"
} "}"
} "}"